DJango配置mysql數據庫以及數據庫遷移


DJango配置mysql數據庫以及數據庫遷移

一.Django 配置MySQL數據庫

在settings.py中配置

import pymysql           # 配置MySQL
pymysql.install_as_MySQLdb()
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # 數據庫引擎
        'NAME': 'mydb',         # 你要存儲數據的庫名,事先要創建之
        'USER': 'root',         # 數據庫用戶名
        'PASSWORD': '1234',     # 密碼
        'HOST': 'localhost',    # IP
        'PORT': '3306',         # 數據庫使用的端口
    }
}

數據庫結構遷移

Python3不支持MySQLdb,可用pymysql代替。

1.首先,在Python虛擬環境下安裝pymysql:pip install pymysql。

2.然后,在項目文件夾下的_init_.py(實際上也可以添加到settings.py中,如上。)添加如下代碼即可。

import pymysql
pymysql.install_as_MySQLdb()

3.再者,在Terminal中執行數據庫遷移命令:

python manage.py makemigrations
python manage.py migrate

溫馨提示:若執行python manage.py makemigrations時提示"No changes detected",
則試試先執行python manage.py makemigrations --empty appname解決問題。

二.數據遷移

把SQLite數據導入到MySQL中

之前我們默認使用的是SQLite數據庫,我們開發完成之后,里面有許多數據。如果我們想轉換成Mysql數據庫,那我們先得把舊數據從SQLite導出,然后再導入到新的Mysql數據庫里去。

1、SQLite導出數據

導出之前,我們先確保settins.py數據庫配置選項那里,還是使用的是SQLite配置,如果已經修改了,請先修改回來:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

然后在CMD命令行里輸入:

python manage.py dumpdata > data.json

這樣就將數據導出到Django項目根目錄下的data.json文件。

2、MySQL導入數據

同樣,先將Django的數據庫配置改為MySQL的:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '你的數據庫名',
        'USER': '你的MySQL用戶名',
        'PASSWORD': '你的密碼',
        'HOST': 'IP',
        'PORT': '3306',
    }
}

然后在CMD命令行里輸入:

python manage.py loaddata data.json

注意:

確保Mysql用戶表里為空的,如果之前有遷移過數據到Mysql,有可能會出錯。注意出錯的時候所報的錯誤信息。如果提示有重復主鍵,那需要先刪掉數據。這些數據是在給MySQL數據庫應用遷移文件的時候產生的,一般是content_type相關的表。

進入到MySQL,執行如下的SQL語句:

use 你的數據庫名;
delete from auth_permission;
delete from django_content_type;

刪除數據之后,再執行一次導入命令即可。基本上,導入不了數據都是MySQL存在數據導致的。

3、加載時區表

另外,有可能所安裝的MySQL沒有加載時區表。這個可能會導致filter對日期的查詢有問題。Django官方文檔也指出這個問題。MySQL官網也有對應處理方法:加載時區表

Linux/Mac解決方法都很簡單。windows系統要先下載一個sql文件:timezone_2018e_posix_sql.zip

下載完成之后,解壓得到一個sql文件,再執行cmd命令導入該文件即可:

mysql -u root -p mysql < timezone_posix.sql

4、MySQL數據到PostgreSQL

操作很簡單:

python manage.py dumpdata > backup.json

到PostgreSQL對應的配置中:

python manage.py loaddata backup.json

三.不同APP之間的數據庫遷移

1.生成模型文件

python3 manage.py inspectdb

2.將模型文件導入到app當中

創建app

python3 manage.py startapp 'app名字'

3.將模型導入創建的app中

python3 manage.py inspectdb > app/models.py


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM