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实现简单拆分PDF文件的方法
Jul 30 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
Jan 24 Python
python交互式图形编程实例(一)
Nov 17 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
python读取word文档,插入mysql数据库的示例代码
Nov 07 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
Nov 15 Python
Python接口开发实现步骤详解
Apr 26 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
pytorch锁死在dataloader(训练时卡死)
May 28 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
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
2016/09/09 PHP
php rmdir使用递归函数删除非空目录实例详解
2016/10/20 PHP
PHP遍历目录文件的常用方法小结
2017/02/03 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
jQuery帮助之筛选查找 children([expr])
2011/01/31 Javascript
jquery选择器简述
2015/08/31 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
jQuery插件form-validation-engine正则表达式操作示例
2017/02/09 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
微信小程序实现加入购物车滑动轨迹
2020/11/18 Javascript
举例讲解如何在Python编程中进行迭代和遍历
2016/01/19 Python
python实现解数独程序代码
2017/04/12 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
Python/ArcPy遍历指定目录中的MDB文件方法
2018/10/27 Python
python实现Flappy Bird源码
2018/12/24 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
python 中的9个实用技巧,助你提高开发效率
2020/08/30 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
平面设计岗位职责
2013/12/14 职场文书
公证书标准格式
2014/04/10 职场文书
弄虚作假心得体会
2014/09/10 职场文书
庆元旦演讲稿
2014/09/15 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
2019入党申请书范文3篇
2019/08/21 职场文书