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 相关文章推荐
Python3中使用PyMongo的方法详解
Jul 28 Python
python实现决策树分类
Aug 30 Python
python 运用Django 开发后台接口的实例
Dec 11 Python
python用match()函数爬数据方法详解
Jul 23 Python
对python中的装包与解包实例详解
Aug 24 Python
解决pytorch-yolov3 train 报错的问题
Feb 18 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
Feb 26 Python
5行Python代码实现图像分割的步骤详解
May 25 Python
python 如何使用find和find_all爬虫、找文本的实现
Oct 16 Python
python Selenium 库的使用技巧
Oct 16 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 Python
分位数回归模型quantile regeression应用详解及示例教程
Nov 02 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
基于empty函数的判断详解
2013/06/17 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
php链式操作的实现方式分析
2019/08/12 PHP
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
Javascript数组与字典用法分析
2014/12/13 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
BootStrapTable 单选及取值的实现方法
2017/01/10 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
js+html实现周岁年龄计算器
2019/06/25 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
Python语法快速入门指南
2015/10/12 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Python中int()函数的用法浅析
2017/10/17 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
python获取依赖包和安装依赖包教程
2020/02/13 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
Python内置异常类型全面汇总
2020/05/28 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
Vilebrequin美国官方网上商店:法国豪华泳装品牌
2020/02/22 全球购物
幼儿园园长自我鉴定
2013/10/22 职场文书
团队拓展活动方案
2014/08/28 职场文书
秋冬农业生产标语
2014/10/09 职场文书
颐和园导游词
2015/01/30 职场文书
房屋维修申请报告
2015/05/18 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
2019各种承诺书范文
2019/06/24 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python