更新時(shí)間:2023-02-14 來(lái)源:黑馬程序員 瀏覽量:
在一些大型的項(xiàng)目演練中,通常項(xiàng)目會(huì)擬采用MySQL存儲(chǔ)商品數(shù)據(jù)、用戶賬戶數(shù)據(jù)和訂單等數(shù)據(jù)量較大、需持久化存儲(chǔ)的數(shù)據(jù),Django默認(rèn)使用的數(shù)據(jù)庫(kù)是sqlite3,下面分步驟介紹如何為Django項(xiàng)目配置MySQL數(shù)據(jù)庫(kù)。
1.新建MySQL數(shù)據(jù)庫(kù)
為項(xiàng)目配置MySQL數(shù)據(jù)庫(kù)之前需先創(chuàng)建小魚(yú)商城的數(shù)據(jù)庫(kù)和授權(quán)用戶,在本地主機(jī)新建MySQL數(shù)據(jù)庫(kù)xiaoyu(編碼方式為utf-8),創(chuàng)建MySQL用戶itheima(密碼為123456)并授權(quán)該用戶訪問(wèn)xiaoyu_mall。
2.配置MySQL數(shù)據(jù)庫(kù)
打開(kāi)配置文件dev.py,修改DATABASES的配置信息,修改后的代碼如下:
DATABASES = { 'default': { # 'ENGINE':'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 'ENGINE': 'django.db.backends.mysql', # 數(shù)據(jù)庫(kù)引擎 'HOST': '127.0.0.1', # 數(shù)據(jù)庫(kù)主機(jī) 'PORT':3306, # 數(shù)據(jù)庫(kù)端口 'USER':'itheima', # 數(shù)據(jù)庫(kù)用戶名 'PASSWORD':'123456', # 數(shù)據(jù)庫(kù)用戶密碼 'NAME':'xiaoyu', # 數(shù)據(jù)庫(kù)名字 } }
3.安裝PyMySQL擴(kuò)展包
數(shù)據(jù)庫(kù)配置完成后可能出現(xiàn)以下錯(cuò)誤:
Error loading MySQLdb module: No module named 'pymysql'.
出現(xiàn)以上錯(cuò)誤是因?yàn)镈jango中操作MySQL數(shù)據(jù)庫(kù)需要啟動(dòng)程序PyMySQL,而且前虛擬環(huán)境中沒(méi)有驅(qū)動(dòng)程序PyMySQL。安裝PyMySQL可以解決以上錯(cuò)誤:
(xiaoyu_mall) E:\xiaoyu_mall>pip install PYMYSQL
但是后期創(chuàng)建應(yīng)用時(shí)又會(huì)出現(xiàn)以下異常:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
這是因?yàn)槟壳癙ython3使用的MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序?yàn)閙ysqlclient。mysqlclient和PyMySQL實(shí)質(zhì)上是由同一作者研發(fā)的不同版本的MySQL數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序,PyMySQL相對(duì)陳舊,這里需要卸載PyMySQL,安裝mysqlclient以解決異常,具體操作如下:
(xiaoyu_mall) E:\xiaoyu_mall\xiaoyu_mall\apps>pip unistall pymysql (xiaoyu_mall) E:\xiaoyu_mall\xiaoyu_mall\apps>pip install mysqlclient
數(shù)據(jù)挖掘和數(shù)據(jù)分析有什么區(qū)別?
2023-02-13Python中怎樣給字符串進(jìn)行大小寫(xiě)轉(zhuǎn)換?
2023-02-10什么是元組?Scala怎樣獲取和定義元組中的值?
2023-02-10究竟應(yīng)該怎樣學(xué)習(xí)大數(shù)據(jù)?【內(nèi)含教程】
2023-02-02Hive中怎樣創(chuàng)建內(nèi)部數(shù)據(jù)表和外部數(shù)據(jù)表?
2023-02-01數(shù)據(jù)的價(jià)值是什么?為什么要做數(shù)據(jù)分析?
2023-02-01