Django連接數(shù)據(jù)庫(kù)
Django的setting文件中,找到數(shù)據(jù)庫(kù)連接,修改成mysql:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangostudy',
'USER': 'root',
'PASSWORD': 'yeqinfang',
'HOST': '192.168.31.101',
'PORT': '3306',
}
}
執(zhí)行遷移
python manage.py makemigrations
python manage.py migrate
pycharm直接報(bào)錯(cuò),說明我們沒有安裝mysql的操作模塊,安裝如下:
然后引入mysql模塊:
再次運(yùn)行,報(bào)錯(cuò):
他要求客戶端版本較高,查看官方文檔:https://pypi.org/project/mysqlclient/
并按照文檔操作:
pip install mysqlclient
發(fā)現(xiàn)還是一樣報(bào)錯(cuò),需要更換客戶端,并再次執(zhí)行:
如上,執(zhí)行成功。原因是django3.0不支持pymysql,而MySQLDB又不支持python3,所以官方推薦安裝mysqlclient(MySQLdb分支)來引用MySQLdb,而不是直接安裝MySQLdb,使用方法應(yīng)該跟MySQLdb一樣。
pycharm連接數(shù)據(jù)庫(kù)
安裝驅(qū)動(dòng)文件之后(下方的感嘆號(hào),點(diǎn)擊一下download),報(bào)如下錯(cuò)誤:
Server returns invalid timezone. Need to set ‘serverTimezone’ property.
很顯然,它提示時(shí)區(qū)不對(duì),那我就去設(shè)置一下服務(wù)器時(shí)區(qū)。
(1)查看時(shí)區(qū)指令:
show variables like'%time_zone';
如圖,system就是沒設(shè)置時(shí)區(qū)。
(2)設(shè)置時(shí)區(qū)
set global time_zone = '+8:00';
(3)重新連接
操作數(shù)據(jù)庫(kù)
創(chuàng)建應(yīng)用:
那么,我們現(xiàn)在開始碼代碼吧!
(1)創(chuàng)建一張表
class loginUser(models.Model):
loginname = models.CharField(max_length=20, null=False, unique=True)
nickname = models.CharField(max_length=20, null=False, unique=False)
sex = models.BooleanField(default=True)
(2)執(zhí)行遷移
python manage.py makemigrations
python manage.py migrate
直接報(bào)錯(cuò),原因是應(yīng)用沒有注冊(cè)。
(3)注冊(cè)應(yīng)用
(4)再次執(zhí)行遷移
再次執(zhí)行成功了,但是沒有表生成。為了查明什么原因,我決定去數(shù)據(jù)庫(kù)查看:
有表生成!說明遷移成功,數(shù)據(jù)庫(kù)生成了表,只是沒顯示在pycharm里。這是為什么呢?
(5)真相了!
pycharm連接數(shù)據(jù)庫(kù)后不能查看表,此時(shí),需要手動(dòng)選擇數(shù)據(jù)庫(kù)
效果展示: