Django配置连接Mysql数据库(第四天)
配置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’),保存内容即可!