配置Mysql數據庫
環境版本:ubunto+django2.2+python3.5+mysql5.7
1)安裝mysql
命令:apt-get install mysql-server
安裝之後通過命令:mysql --version查看版本
通過命令:mysql -u root -p進行登錄,默認密碼爲mysql
進入數據庫後,通過命令:show databases;查看已經存在的數據庫
通過命令:create database xm20200425 charset=utf8;創建新的數據庫
2)Django配置連接mysql
創建項目與應用後,打開項目中的settings.py配置好應用,並配置mysql連接如下:
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’, #數據庫驅動
‘NAME’: ‘xm20200425’, #剛剛新建的數據庫名稱
‘USER’: ‘root’, #數據庫用戶
‘PASSWORD’: ‘mysql’, #數據庫密碼
‘HOST’: ‘localhost’, #數據庫是否在本機
‘PORT’: 3306, #數據庫監聽端口號
}
}
3)啓動項目報錯
報錯信息一
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
分析:由於python3缺少了MYSQLdb這個模塊導致。
處理方法:
安裝pymysql,命令:pip install pymysql
進入項目下的__init__.py,添加兩行代碼,將pymysql引入
import pymysql
pymysql.install_as_MySQLdb()
報錯信息二
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
分析:這是由於安裝模板pymysql版本爲0.9.3,比django2.2裏面默認限制的版本低導致的。
處理方法:
找到python的安裝路徑,找到django,找到對應數據庫裏面的base.py文件
例如:~/.virtualenvs/20200422/lib/python3.5/site-packages/django/db/backends/mysql/base.py
將35、36行代碼用#號註釋掉,保存內容。
35#if version < (1, 3, 13):
36# raise ImproperlyConfigured(‘mysqlclient 1.3.13 or newer is required; yo u have %s.’ % Database.version)
報錯信息三
AttributeError: ‘str’ object has no attribute ‘decode’
分析:這是django2.2版本的代碼限制。
處理方法:
找到python的安裝路徑,找到django,找到對應數據庫裏面的operations.py文件
例如:~/.virtualenvs/20200422/lib/python3.5/site-packages/django/db/backends/mysql/operations.py
將146行代碼中的
query = query.decode(errors=‘replace’)
修改爲:query = query.encode(errors=‘replace’),保存內容即可!