当前位置: 首页 > 工具软件 > django-mysql > 使用案例 >

Django中使用mysql

葛骏
2023-12-01

前文提到了在Django中使用sqlite3,因为新项目的数据量会稍微比较大,且需要支持使用navicat做公网访问,故而采用mysql。

如何在Django中使用mysql的文章很多,这里就笔者自己遇到的坑做一些记录。

 

一、setting.py的修改:

修改databases----(主要是修改引擎Engine部分)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'qa_rds',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
        'OPTIONS': {
            'autocommit': True,
        }
    }
}

二、修改init.py

import pymysql
pymysql.install_as_MySQLdb() #使用pymysql作为mysql数据库驱动

三、创建app

app的名字就是数据库的名字

指令如下:

python manage.py startapp [dbname]

这里遇到了第一个坑,报 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

如果直接去尝试升级mysqlclient或者安装,就会掉坑里。

这时候需要找到python安装路径下的 django\db\backends\mysql\base.py

终端输入: echo $PYTHONPATH 找到python安装目录

如果是windows,到环境设置里找path值,查到python的安装目录,然后一层层往下找

再按后面的路径找到base.py文件

找到里面的一行判断mysqlclient版本并报错的语句:

if version < (1, 3, 3):
    raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

将这段代码进行注释,重新在项目目录终端中运行 python manage.py startapp [dbname]

命令运行没有报错,重新刷新一下项目目录,新生成的app目录就出现了。

 

编辑了models.py文件后,执行 python manage.py migrate 时,又会有新的报错内容:

AttributeError: 'str' object has no attribute 'decode'
顺着错误点进去,找到错误代码:query = query.decode(errors=‘replace’)
将decode修改为encode

重新执行,即可进行初始化

 

 

 

 

 类似资料: