python全栈开发基础知识学习——Django框架(四、常见错误 )

本文主要介绍了在Python全栈开发中使用Django框架时遇到的六个常见问题,包括更改数据库、解决`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)

问题六

在首次安装好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';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值