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中contextlib上下文管理模块的用法
Jun 28 Python
利用python程序帮大家清理windows垃圾
Jan 15 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
Python3.5模块的定义、导入、优化操作图文详解
Apr 27 Python
简单了解django索引的相关知识
Jul 17 Python
使用pandas读取文件的实现
Jul 31 Python
python+pygame实现坦克大战
Sep 10 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
django xadmin action兼容自定义model权限教程
Mar 30 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 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
实用函数5
2007/11/08 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
php的ajax简单实例
2014/02/27 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
犀利的js 函数集合
2009/06/11 Javascript
javascript 写的一个简单的timer
2009/07/30 Javascript
JavaScript 一道字符串分解的题目
2011/08/03 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
javascript如何使用bind指定接收者
2014/05/04 Javascript
使用jquery.qrcode.min.js实现中文转化二维码
2016/03/11 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
使用vue实现点击按钮滑出面板的实现代码
2017/01/10 Javascript
jQuery ajax读取本地json文件的实例
2017/10/31 jQuery
小程序富文本提取图片可放大缩小
2020/05/26 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python如何把嵌套列表转变成普通列表
2018/03/20 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
python实现百度语音识别api
2018/04/10 Python
python3爬虫怎样构建请求header
2018/12/23 Python
详解python中递归函数
2019/04/16 Python
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
会计专业毕业生自荐信范文
2013/12/20 职场文书
外企办公室竞聘演讲稿
2013/12/29 职场文书
建设单位项目负责人任命书
2014/06/06 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
大一新生检讨书
2014/10/29 职场文书
死亡诗社观后感
2015/06/05 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang