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中的mock库对Python代码进行模拟测试
Apr 16 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
Python之列表实现栈的工作功能
Jan 28 Python
Python实现多进程的四种方式
Feb 22 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
Aug 14 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
Matplotlib使用Cursor实现UI定位的示例代码
Mar 12 Python
Python decorator拦截器代码实例解析
Apr 04 Python
keras 实现轻量级网络ShuffleNet教程
Jun 19 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 Python
教你如何使用Python实现二叉树结构及三种遍历
Jun 18 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
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
基于jquery的tab切换 js原理
2010/04/01 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
微信小程序生成二维码的示例代码
2019/03/29 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
python网络编程示例(客户端与服务端)
2014/04/24 Python
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
UNIX文件系统分类
2014/11/11 面试题
计算机专业优秀大学生自我总结
2014/01/21 职场文书
cf收人广告词
2014/03/14 职场文书
共产党员公开承诺书
2014/03/25 职场文书
Python基础之元类详解
2021/04/29 Python
Python之基础函数案例详解
2021/08/30 Python