目录
- 问题一:更改数据库
- 问题二:No module named 'MySQLdb'
- 问题三:
- 问题四:
- 问题五:
问题一:更改数据库
django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 , 引擎名称:django.db.backends.sqlite3,如果我们需要使用MySQL的话,那么我们需要手动修改settings.py的内容
解决办法:
找到DATABASES,将数据库引擎修改为MySql。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'books', #你的数据库名称
'USER': 'root', #你的数据库用户名
'PASSWORD': '', #你的数据库密码
'HOST': '', #你的数据库主机,留空默认为localhost
'PORT': '3306', #你的数据库端口
}
}
问题二:No module named ‘MySQLdb’
这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb对于py3有很大问题,所以我们需要的驱动是PyMySQL
所以,我们只需要找到项目名文件下的__init__,在里面写入:
解决办法:
import pymysql
pymysql.install_as_MySQLdb()
问题三:
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
解决办法:
第一步找到本机安装python的目录
C:\Python37\Lib\site-packages\django\db\backends\mysql(python安装目录)打开base.py,注释掉以下内容:
if version < (1, 3, 13):
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
问题四:
File "C:\Python37\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in last_executed_query
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'
解决办法:
解决办法:打开此文件把146行的decode修改为encode
问题五:
试用python3.7 + Django2.1.3的时候, 在创建模型类关联外键时, 报如下错误:
Traceback (most recent call last):
xxxxxxxxxxx
TypeError: __init__() missing 1 required positional argument: 'on_delete'
解决办法:
# 关联外键时设置`on_delete=`参数即可
student_grade = models.ForeignKey('Grades', on_delete=models.CASCADE)