首页 编程教程正文

[笔记]Django2.2连接数据库的坑

piaodoo 编程教程 2020-02-22 22:02:40 809 0 python教程

本文来源吾爱破解论坛

先说环境:
python是3.6,Django是2.2,数据库是mariadb10.3
Django的官方文档里给出了连接mysql/mariadb数据库的两种方式:
1. mysqlclient 开源产品
2. mysql connector/python oracle公司的产品

我去翻了一下mysqlclient的安装说明,作者很明确的说了这个项目在Mac机器上bug,我就没再继续看下去,不知道到底是啥bug,反正我对速度没有太高的要求,用纯python的实现更方便一些
也怪我太浪......我没去使用oracle公司的东西,而是选择了另外一个纯python实现,叫做pymysql
顺利引入pymysql,import pymysql; pymysql.install_as_mysqlclient()后,在settings.py文件中添加数据库连接设置时,问题来了
程序报错,提示 “mysqlclient 1.3.13 or newer is required; you have 0.9.3.”

我查了一下pymysql的最新版本,GitHub上的确是0.9.3,大写的尴尬嗨学网
我抱着先跑起来的打算,根据报错信息追踪到了抛出异常的文件
/path/to/your/python-version/lib/site-packages/django/db/backends/mysql/base.py
找到:

11.png (26.37 KB, 下载次数: 0)

下载附件  保存到相册

2019-4-4 23:36 上传


这里是一个简单判断,如果version < 1.3.13直接抛出异常,我注释掉了这两行

但是问题还没完,数据库的确是连上了,但当我试着创建自定义model并python manage.py migrate时,问题又来了

这次报错是:attributeerror 'str' object has no attribute 'decode'

到了这种地步,我已经准备尝试换oracle公司的库了,抱着死也要死个明白的心理,追踪到这个报错文件的位置
/path/to/your/python-version/lib/site-packages/django/db/backends/mysql/oprations.py
找到:

22.png (14.32 KB, 下载次数: 0)

下载附件  保存到相册

2019-4-4 23:44 上传


这个是我修改过的,以前是
[Python] 纯文本查看 复制代码
if query is not None:
    query = query.decode(errors='replace')



这第二个异常,我觉得不仅仅是pymysql的问题,很可能mysql connector/python 也会出现这样的异常

记录下来,以备日后查找



版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7404.html

搜索