Django把SQLite數據庫轉換為Mysql數據庫的過程

大部分新手剛學Django開發的時候默認用的都是SQLite數據庫,上線部署的時候,大多用的卻是Mysql。那麼我們應該如何把數據庫從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': 'localhost',
        'PORT': '3306',
    }
}

先找到數據表對應的 migrations 文件夾,保留 __pycache__ 和 __init__.py 文件,其他的都刪掉。

然後先執行下面這行命令:

python manage.py makemigrations

再執行下面這行命令:

python manage.py migrate

然後在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存在數據導致的。

到此這篇關於Django如何把SQLite數據庫轉換為Mysql數據庫的文章就介紹到這瞭,更多相關Django SQLite數據庫轉換Mysql數據庫內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: