本篇文章给大家分享的是有关怎么在django 2.2中使用mysql,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
可<强>第一个坑(提示你的mysqlclient版本过低)强>
无聊你是否执行pip安装mysqlclient安装的最新版的,都抛出:
django.core.exceptions.ImproperlyConfigured:, mysqlclient 1.3.3 或是newer is 需要;,你have 0.7.11.None
医学博士,楼主看到这错误太想骂人了,没办法采取网上的方法,注释大法!
找到Python安装路劲下的django Python36-32 \ Lib \网站\ \ mysql数据库\后端\ \基地。py文件
将文件中的如下代码注释(可能需先关闭pycharm IDE)
if version & lt;, (1,, 3,, 3): raise 才能;ImproperlyConfigured (“mysqlclient  1.3.3 或是newer is 需要;,你have % s", %, Database.__version__)
<强>第二个坑(str类型没有解码方法)强>
对对对,py3默认str是unicode编码,通过编码方法编码成字节类型,后者才有解码解码方法。
提示错误Python36 django \ lib \网站\ \ mysql数据库\后端\ \ operations.py", 149行,在last_executed_query
这里网上一搜一堆的把编码改成解码方法,我靠,这谁的脑洞无敌了
源方法内容(pip安装的django 2.2.1原封不动的内容):
,, def last_executed_query (sql游标自我,,,,,,params): ,,,#,With MySQLdb,, cursor objects have an (无证),“_executed" ,,,#,attribute where 从而exact query sent 用,database is 保存。 ,,,#,阅读MySQLdb/cursors.py 拷贝,source 分布。 ,,,query =, getattr(光标,& # 39;_executed& # 39;,,也没有) ,,,if query is not 没有: ,,,,,query =, query.decode(错误=& # 39;取代# 39;) ,,,return 查询
通过打印大法输出查询结果,内容为
SELECT @@SQL_AUTO_IS_NULL 数据类型为str
这里网上还有注释大法,楼主不知道注释了如果的后遗症是啥有没有影响,于是也没采纳。
于是我去django的github去翻这个文件这个方法的最新/历史版本,结果最新主人分支内容如下:
,, def last_executed_query (sql游标自我,,,,,,params): ,,,#,With MySQLdb,, cursor objects have an (无证),“_executed" ,,,#,attribute where 从而exact query sent 用,database is 保存。 ,,,#,阅读MySQLdb/cursors.py 拷贝,source 分布。 ,,,#,MySQLdb returns 字符串,PyMySQL 字节。 ,,,return force_str (getattr(光标,& # 39;_executed& # 39;,,也没有),,错误=& # 39;取代# 39;)
看函数名,应该是强制去把SQL转换成str了
我靠! ! !这尼玛官网2.2.1/2.2.2(当前最新版)的包不是害人么,记得该文件上面引入下这个方法
得到django.utils.encoding import force_str
以上就是怎么在django 2.2中使用mysql,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。