DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 數據庫引擎 'NAME': 'mydb', # 你要存儲數據的庫名,事先要建立之 'USER': 'root', # 數據庫用戶名 'PASSWORD': '1234', # 密碼 'HOST': 'localhost', # 主機 'PORT': '3306', # 數據庫使用的端口 } }
Python3不支持MySQLdb,可用pymysql代替。html
1.首先,在Python虛擬環境下安裝pymysql:pip install pymysql。python
2.而後,在項目文件夾下的_init_.py添加以下代碼便可。mysql
import pymysql pymysql.install_as_MySQLdb()
3.再者,在Terminal中執行數據庫遷移命令:sql
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導出數據django
導出以前,咱們先確保settins.py數據庫配置選項那裏,仍是使用的是SQLite配置,若是已經修改了,請先修改回來:json
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
而後在CMD命令行裏輸入:windows
python manage.py dumpdata > data.json
這樣就將數據導出到Django項目根目錄下的data.json文件。app
二、MySQL導入數據一樣,先將Django的數據庫配置改成MySQL的:post
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '你的數據庫名', 'USER': '你的MySQL用戶名', 'PASSWORD': '你的密碼', 'HOST': 'localhost', '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存在數據致使的。
另外,有可能所安裝的MySQL沒有加載時區表。這個可能會致使filter對日期的查詢有問題。Django官方文檔也指出這個問題。MySQL官網也有對應處理方法:加載時區表
Linux/Mac解決方法都很簡單。windows系統要先下載一個sql文件:timezone_2018e_posix_sql.zip
下載完成以後,解壓獲得一個sql文件,再執行cmd命令導入該文件便可:
mysql -u root -p mysql < timezone_posix.sql
操做很簡單:
python manage.py dumpdata > backup.json
到PostgreSQL對應的配置中:
python manage.py loaddata backup.json
在settings.py中配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 數據庫引擎 'NAME': 'mydb', # 你要存儲數據的庫名,事先要建立之 'USER': 'root', # 數據庫用戶名 'PASSWORD': '1234', # 密碼 'HOST': 'localhost', # 主機 'PORT': '3306', # 數據庫使用的端口 } }
數據庫結構遷移
Python3不支持MySQLdb,可用pymysql代替。html
1.首先,在Python虛擬環境下安裝pymysql:pip install pymysql。python
2.而後,在項目文件夾下的_init_.py添加以下代碼便可。mysql
import pymysql pymysql.install_as_MySQLdb()
3.再者,在Terminal中執行數據庫遷移命令:sql
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數據庫裏去。數據庫
一、SQLite導出數據django
導出以前,咱們先確保settins.py數據庫配置選項那裏,仍是使用的是SQLite配置,若是已經修改了,請先修改回來:json
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
而後在CMD命令行裏輸入:windows
這樣就將數據導出到Django項目根目錄下的data.json文件。app
二、MySQL導入數據
一樣,先將Django的數據庫配置改成MySQL的:post
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': '你的數據庫名', 'USER': '你的MySQL用戶名', 'PASSWORD': '你的密碼', 'HOST': 'localhost', 'PORT': '3306', } }
而後在CMD命令行裏輸入:
注意:
確保Mysql用戶表裏爲空的,若是以前有遷移過數據到Mysql,有可能會出錯。注意出錯的時候所報的錯誤信息。若是提示有重複主鍵,那須要先刪掉數據。這些數據是在給MySQL數據庫應用遷移文件的時候產生的,通常是content_type相關的表。
進入到MySQL,執行以下的SQL語句:
use 你的數據庫名; delete from auth_permission; delete from django_content_type;
刪除數據以後,再執行一次導入命令便可。基本上,導入不了數據都是MySQL存在數據致使的。
加載時區表
另外,有可能所安裝的MySQL沒有加載時區表。這個可能會致使filter對日期的查詢有問題。Django官方文檔也指出這個問題。MySQL官網也有對應處理方法:加載時區表
Linux/Mac解決方法都很簡單。windows系統要先下載一個sql文件:timezone_2018e_posix_sql.zip
下載完成以後,解壓獲得一個sql文件,再執行cmd命令導入該文件便可:
MySQL數據到PostgreSQL
操做很簡單:
到PostgreSQL對應的配置中: