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)

你可能感兴趣的:(python全栈学习)