关于django新版本无法使用MySQL数据库的问题

 

稍微记录下Django2.2使用MariaDB和MySQL遇到的坑
 

现在演示一下整个流程吧

1.创建项目和应用

关于django新版本无法使用MySQL数据库的问题_django

PS:你也可以使用PyCharm直接创建项目

2.注册应用

先把刚刚创建的应用添加进去

关于django新版本无法使用MySQL数据库的问题_django_02

3.配置MySQL或者MariaDB

关于django新版本无法使用MySQL数据库的问题_python_03

4.PyMySQL替换默认的MySQLdb

Django使用的MySQLdb对Python3支持力度不够,我们用PyMySQL来代替

关于django新版本无法使用MySQL数据库的问题_django_04

这句话其实就是兼容代码,这样你导入mysqldb也相当于导入PyMySQL了

关于django新版本无法使用MySQL数据库的问题_后台管理_05

5.创建数据库

Django除了默认的sqlite会帮你创建数据库外(只创建对应的表),其他数据库都不会帮你创建的,所以你需要自己创建

关于django新版本无法使用MySQL数据库的问题_django_06

6.django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

如果你的Django是最新的2.2,PyMySQL也是最新的0.93的话,你会发现Django会报错:

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.

这个是Django对MySQLdb版本的限制,我们使用的是PyMySQL,所以不用管它
关于django新版本无法使用MySQL数据库的问题_mariadb_07

7.AttributeError: 'str' object has no attribute 'decode'

再继续运行发现又冒了个错误:AttributeError: 'str' object has no attribute 'decode'

这个就不能乱改了,所以先调试输出下:

关于django新版本无法使用MySQL数据库的问题_后台管理_08

发现是对字符串进行了decode解码操作:(一般对字符串进行编码,二进制进行解码)

关于django新版本无法使用MySQL数据库的问题_后台管理_09

解决也很简单,改成encode即可
关于django新版本无法使用MySQL数据库的问题_python_10

8.再运行

再运行就没错误了

关于django新版本无法使用MySQL数据库的问题_mariadb_11

但也没有什么东西

关于django新版本无法使用MySQL数据库的问题_django_12

发现了个后台貌似也登录不上

关于django新版本无法使用MySQL数据库的问题_python_13

9.生成对应的数据库

先创建一个用户的模型类

关于django新版本无法使用MySQL数据库的问题_mariadb_14

生成对应的数据库(项目里可以写个build.sh的脚本批量化执行)

关于django新版本无法使用MySQL数据库的问题_python_15

这个有点类似Net的CodeFirst了
关于django新版本无法使用MySQL数据库的问题_python_16

10.生成对应的后台管理页面

设置后台语言,默认是英语的

关于django新版本无法使用MySQL数据库的问题_mysql_17

创建超级管理员

关于django新版本无法使用MySQL数据库的问题_后台管理_18

在admin中注册对应的模型类

关于django新版本无法使用MySQL数据库的问题_后台管理_19

这时候运行就可以管理对应的页面了

关于django新版本无法使用MySQL数据库的问题_django_20

登录页面

关于django新版本无法使用MySQL数据库的问题_mysql_21

后台管理主页

关于django新版本无法使用MySQL数据库的问题_后台管理_22

这时候就可以创建修改UserInfo类了

关于django新版本无法使用MySQL数据库的问题_后台管理_23

我随便创建了几个用户

关于django新版本无法使用MySQL数据库的问题_mariadb_24

这种对象直接tostring(str(xxx))会导致显示不人性化,如果想知道显示的字段也很简单:

关于django新版本无法使用MySQL数据库的问题_后台管理_25

然后刷新下列表页就ok了(如果手动输入命令则不用重启服务器,通过PyCharm运行的需要重新启动下)

关于django新版本无法使用MySQL数据库的问题_mysql_26

是不是轻轻松松就解决了对数据库表的增删改查?这就是Django的强大之处

逆天点评:Net的MVC最擅长的就是快速生成前端页面和对应的验证,而Python的Django最擅长的就是快速生成后台管理页面。这两个语言都是快速建站的常用编程语言(项目 V1~V2 阶段)

 
 
 
 
 

作者:毒逆天