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

系统 1442 0

目录

    • 问题一:更改数据库
    • 问题二: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)

            
          

更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论