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实现读取机器硬件信息的方法示例
Jun 09 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
Sanic框架配置操作分析
Jul 17 Python
详解分布式任务队列Celery使用说明
Nov 29 Python
Python函数返回不定数量的值方法
Jan 22 Python
Python线程之定位与销毁的实现
Feb 17 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
python基于pdfminer库提取pdf文字代码实例
Aug 15 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
Python安装依赖(包)模块方法详解
Feb 14 Python
python中取绝对值简单方法总结
Jul 24 Python
Python中logging日志的四个等级和使用
Nov 17 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
Windows下安装Memcached的步骤说明
2010/04/25 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
php calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
Python自动发邮件脚本
2017/03/31 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
python3实现绘制二维点图
2019/12/04 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
2020/03/14 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
网站设计师的岗位职责
2013/11/21 职场文书
入党自我评价范文
2014/02/02 职场文书
教师校本培训方案
2014/02/26 职场文书
俄语专业职业生涯规划
2014/02/26 职场文书
我的中国梦主题班会
2015/08/14 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers