吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5307|回复: 4
收起左侧

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

[复制链接]
zhqinux 发表于 2019-4-4 23:47
先说环境:
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
这里是一个简单判断,如果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
这个是我修改过的,以前是
[Python] 纯文本查看 复制代码
if query is not None:
    query = query.decode(errors='replace')



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

记录下来,以备日后查找



发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yesheng607 发表于 2019-4-5 01:09
2.2能用了么,不是最多支持2.0么?
ilovesusu 发表于 2019-4-14 22:19
找了半天原来是上游的问题啊   盲目升级就是容易出问题啊
superzhangxue 发表于 2019-4-16 23:18
django2.0以上的版本只支持MySQL5.5以上的版本,需要的小伙伴看下!
geniusjoy 发表于 2019-4-17 23:04
macos 直接使用mysqlclient
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 07:35

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表