Django把SQLite數(shù)據(jù)庫(kù)轉(zhuǎn)換為Mysql數(shù)據(jù)庫(kù)的過程
大部分新手剛學(xué)Django開發(fā)的時(shí)候默認(rèn)用的都是SQLite數(shù)據(jù)庫(kù),上線部署的時(shí)候,大多用的卻是Mysql。那么我們應(yīng)該如何把數(shù)據(jù)庫(kù)從SQLite遷移轉(zhuǎn)換成Mysql呢?
之前我們默認(rèn)使用的是SQLite數(shù)據(jù)庫(kù),我們開發(fā)完成之后,里面有許多數(shù)據(jù)。如果我們想轉(zhuǎn)換成Mysql數(shù)據(jù)庫(kù),那我們先得把舊數(shù)據(jù)從SQLite導(dǎo)出,然后再導(dǎo)入到新的Mysql數(shù)據(jù)庫(kù)里去。
1、SQLite導(dǎo)出數(shù)據(jù)
導(dǎo)出之前,我們先確保settins.py數(shù)據(jù)庫(kù)配置選項(xiàng)那里,還是使用的是SQLite配置,如果已經(jīng)修改了,請(qǐng)先修改回來(lái):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}然后在CMD命令行里輸入:
python manage.py dumpdata > data.json
這樣就將數(shù)據(jù)導(dǎo)出到Django項(xiàng)目根目錄下的data.json文件。
2、MySQL導(dǎo)入數(shù)據(jù)
同樣,先將Django的數(shù)據(jù)庫(kù)配置改為MySQL的:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '你的數(shù)據(jù)庫(kù)名',
'USER': '你的MySQL用戶名',
'PASSWORD': '你的密碼',
'HOST': 'localhost',
'PORT': '3306',
}
}先找到數(shù)據(jù)表對(duì)應(yīng)的 migrations 文件夾,保留 __pycache__ 和 __init__.py 文件,其他的都刪掉。

然后先執(zhí)行下面這行命令:
python manage.py makemigrations

再執(zhí)行下面這行命令:
python manage.py migrate

然后在CMD命令行里輸入:
python manage.py loaddata data.json
再運(yùn)行項(xiàng)目,發(fā)現(xiàn)成功運(yùn)行

注意:
確保Mysql用戶表里為空的,如果之前有遷移過數(shù)據(jù)到Mysql,有可能會(huì)出錯(cuò)。注意出錯(cuò)的時(shí)候所報(bào)的錯(cuò)誤信息。如果提示有重復(fù)主鍵,那需要先刪掉數(shù)據(jù)。這些數(shù)據(jù)是在給MySQL數(shù)據(jù)庫(kù)應(yīng)用遷移文件的時(shí)候產(chǎn)生的,一般是content_type相關(guān)的表。
進(jìn)入到MySQL,執(zhí)行如下的SQL語(yǔ)句:
use 你的數(shù)據(jù)庫(kù)名; delete from auth_permission; delete from django_content_type;
刪除數(shù)據(jù)之后,再執(zhí)行一次導(dǎo)入命令即可?;旧希瑢?dǎo)入不了數(shù)據(jù)都是MySQL存在數(shù)據(jù)導(dǎo)致的。
到此這篇關(guān)于Django如何把SQLite數(shù)據(jù)庫(kù)轉(zhuǎn)換為Mysql數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)Django SQLite數(shù)據(jù)庫(kù)轉(zhuǎn)換Mysql數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Django數(shù)據(jù)庫(kù)(SQlite)基本入門使用教程
- django 將自帶的數(shù)據(jù)庫(kù)sqlite3改成mysql實(shí)例
- Django 創(chuàng)建后臺(tái),配置sqlite3教程
- Django將默認(rèn)的SQLite更換為MySQL的實(shí)現(xiàn)
- DJango的創(chuàng)建和使用詳解(默認(rèn)數(shù)據(jù)庫(kù)sqlite3)
- django 連接數(shù)據(jù)庫(kù) sqlite的例子
- django使用sqlite3統(tǒng)計(jì)前臺(tái)站點(diǎn)訪問數(shù)量示例
相關(guān)文章
使用Python實(shí)現(xiàn)七大排序算法的代碼實(shí)例
這篇文章主要介紹了使用Python實(shí)現(xiàn)七大排序算法的代碼實(shí)例,所謂排序,就是使一串記錄,按照其中的某個(gè)或某些關(guān)鍵字的大小,遞增或遞減的排列起來(lái)的操作,需要的朋友可以參考下2023-07-07
pyqt4教程之實(shí)現(xiàn)windows窗口小示例分享
這篇文章主要介紹了pyqt4實(shí)現(xiàn)windows窗口小示例,需要的朋友可以參考下2014-03-03
如何基于python測(cè)量代碼運(yùn)行時(shí)間
這篇文章主要介紹了如何基于python測(cè)量代碼運(yùn)行時(shí)間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
python實(shí)現(xiàn)簡(jiǎn)易數(shù)碼時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)易數(shù)碼時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
LyScript實(shí)現(xiàn)內(nèi)存交換與差異對(duì)比的方法詳解
LyScript?針對(duì)內(nèi)存讀寫函數(shù)的封裝功能并不多,只提供了內(nèi)存讀取和內(nèi)存寫入函數(shù)的封裝,本篇文章將繼續(xù)對(duì)API進(jìn)行封裝,實(shí)現(xiàn)一些在軟件逆向分析中非常實(shí)用的功能,需要的可以參考一下2022-08-08
python 解決動(dòng)態(tài)的定義變量名,并給其賦值的方法(大數(shù)據(jù)處理)
今天小編就為大家分享一篇python 解決動(dòng)態(tài)的定義變量名,并給其賦值的方法(大數(shù)據(jù)處理),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2018-11-11
10分鐘學(xué)會(huì)使用python實(shí)現(xiàn)人臉識(shí)別(附源碼)
這篇文章主要介紹了10分鐘學(xué)會(huì)使用python實(shí)現(xiàn)人臉識(shí)別(附源碼),幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03

