怎么在django 2.2中使用mysql

  介绍

本篇文章给大家分享的是有关怎么在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,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

怎么在django 2.2中使用mysql