django 2.2和mysql使用的常见问题


Posted in Python onJuly 18, 2019

可能是由于Django使用的MySQLdb库对Python3不支持,我们用采用了PyMySQL库来代替,导致出现各种坑,特别是执行以下2条命令的是时候:

python manage.py makemigrations
or
python manage.py inspectdb

第一个坑(提示你的mysqlclient版本过低)

无聊你是否执行pip install mysqlclient安装的最新版的,都抛出:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None

MD,LZ看到这错误太想骂人了,没办法采取网上的方法,注释大法!

找到Python安装路劲下的Python36-32\Lib\site-packages\django\db\backends\mysql\base.py文件

将文件中的如下代码注释(可能需先关闭pycharm IDE)

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

第二个坑(str类型没有decode方法)

对对对,py3默认str是unicode编码,通过encode方法编码成bytes类型,后者才有decode解码方法。
提示错误来源:Python36\lib\site-packages\django\db\backends\mysql\operations.py", line 149, in last_executed_query

这里网上一搜一堆的把encode改成decode方法,我靠,这谁的脑洞无敌了
源方法内容(pip安装的django 2.2.1原封不动的内容):

def last_executed_query(self, cursor, sql, params):
    # With MySQLdb, cursor objects have an (undocumented) "_executed"
    # attribute where the exact query sent to the database is saved.
    # See MySQLdb/cursors.py in the source distribution.
    query = getattr(cursor, '_executed', None)
    if query is not None:
      query = query.decode(errors='replace')
    return query

通过print大法输出query结果,内容为

SELECT @@SQL_AUTO_IS_NULL

数据类型为str

这里网上还有注释大法,LZ不知道注释了if的后遗症是啥有没有影响,于是也没采纳。

于是我去django的github去翻这个文件这个方法的最新/历史版本,结果最新master分支内容如下:

def last_executed_query(self, cursor, sql, params):
    # With MySQLdb, cursor objects have an (undocumented) "_executed"
    # attribute where the exact query sent to the database is saved.
    # See MySQLdb/cursors.py in the source distribution.
    # MySQLdb returns string, PyMySQL bytes.
    return force_str(getattr(cursor, '_executed', None), errors='replace')

看函数名,应该是强制去把SQL转换成str了

我靠!!!这尼玛官网2.2.1/2.2.2(当前最新版)的包不是害人么,记得该文件上面引入下这个方法

from django.utils.encoding import force_str

然后再执行managa.py命令,可以了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现随机密码字典生成器示例
Apr 09 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
Jul 25 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
Nov 29 Python
Python人脸识别初探
Dec 21 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 Python
如何用C代码给Python写扩展库(Cython)
May 17 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
如何使用 Python 读取文件和照片的创建日期
Sep 05 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 Python
详解Python二维数组与三维数组切片的方法
Jul 18 #Python
Django框架视图介绍与使用详解
Jul 18 #Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 #Python
使用django实现一个代码发布系统
Jul 18 #Python
python 将字符串中的数字相加求和的实现
Jul 18 #Python
TensorFlow实现简单的CNN的方法
Jul 18 #Python
windows上安装python3教程以及环境变量配置详解
Jul 18 #Python
You might like
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
2020/04/06 PHP
使用js如何实现全选与全不选
2013/12/30 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
Node.js之网络通讯模块实现浅析
2017/04/01 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
javascript的this关键字详解
2019/05/20 Javascript
详解vue-cli3开发Chrome插件实践
2019/05/29 Javascript
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
python查询mysql,返回json的实例
2018/03/26 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
Django websocket原理及功能实现代码
2020/11/14 Python
UDP协议功能
2013/01/06 面试题
经典优秀个人求职自荐信格式
2013/09/25 职场文书
2013年入党人员的自我鉴定
2013/10/25 职场文书
医学生自我鉴定范文
2013/11/08 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
代理协议书
2014/04/22 职场文书
2015毕业寄语大全
2015/02/26 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
市场营销计划书
2019/04/24 职场文书
解析Redis Cluster原理
2021/06/21 Redis
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS