当前位置: 移动技术网 > IT编程>脚本编程>Python > Django 连接 MySQL 数据库及常见报错解决

Django 连接 MySQL 数据库及常见报错解决

2019年07月31日  | 移动技术网IT编程  | 我要评论

dnf安安游戏网,双月殿拍卖行,天才宝宝甜心妈

django 连接 mysql数据库及常见报错解决

mysql 的安装以及设置远程访问权限,不属于本笔记的重点,此处不做多余赘述

前提:
mysql 安装成功,且已配置远程访问权限(如在本地测试的忽略此项)

终端或者数据库管理工具连接 mysql ,并新建项目所需数据库

create database drf_shop character set utf8;

创建数据库一定要将字符编码设置为utf8,很多错误就是没正确设置编码导致的!

安装访问 mysql 的 python 模块

pip install pymysql

django 相关配置

工程文件夹(settings平级的文件夹)/_init_.py

from pymysql import install_as_mysqldb

install_as_mysqldb()

settings.py 中替换默认 database 相关配置

databases = {
    'default': {
        'engine': 'django.db.backends.mysql',  # django 数据库后台
        'name': 'drf_shop',  # 连接数据库的名称
        'user': 'root',  # 用户名
        'password': '123456',  # 密码
        'host': '127.0.0.1',  # 主机
        'port': '3306',  # 端口
    }
}

至此,就可以像使用sqlite一样使用mysql了!

可能会遇到的报错

首先需要保证前面所有步骤均配置成功

报错1: django.core.exceptions.improperlyconfigured: mysqlclient 1.x.xx or newer is required; you have 0.x.x.

报错内容:

raise improperlyconfigured('mysqlclient 1.x.xx or newer is required; you have %s.' % database.__version__)

django.core.exceptions.improperlyconfigured: mysqlclient 1.x.xx or newer is required; you have 0.x.x.

这里 xx 表示版本,报错版本可能不同但解决方法时一样的

解决方法:

/python37(python安装目录)/lib/site-packages/django/db/backends/mysql/base.py,注释掉以下内容:

# if version < (1, 3, 13):
#   raise improperlyconfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % database.__version__)

报错2:attributeerror: 'str' object has no attribute 'decode'

报错内容:

file "xx\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'

解决方法:

打开 xx\python37\lib\site-packages\django\db\backends\mysql\operations.py 把146行的 decode 修改为 encode 即可

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网