问题一:更改数据库
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)
问题六
在首次安装好MySQL的时候,可能时区并没有做调整,报如下错误:
Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' property manually.
时区错误,MySQL默认的时区是UTC时区,比北京时间晚8个小时。
所以要修改mysql的时长
解决办法:
在mysql的命令模式下,输入:
set global time_zone='+8:00';
本文主要介绍了在Python全栈开发中使用Django框架时遇到的六个常见问题,包括更改数据库、解决`No module named 'MySQLdb'`错误、模型类外键关联错误以及时区错误等,并提供了详细的解决办法。
71万+

被折叠的 条评论
为什么被折叠?



