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

时间:2021-11-25 19:29:48

现在演示一下整个流程吧

1.创建项目和应用

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

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

2.注册应用

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

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

3.配置MySQL或者MariaDB

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

4.PyMySQL替换默认的MySQLdb

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

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

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

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

5.创建数据库

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

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

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,所以不用管它
稍微记录下Django2.2使用MariaDB和MySQL遇到的坑

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

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

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

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

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

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

解决也很简单,改成encode即可
稍微记录下Django2.2使用MariaDB和MySQL遇到的坑

8.再运行

再运行就没错误了

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

但也没有什么东西

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

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

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

9.生成对应的数据库

先创建一个用户的模型类

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

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

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

这个有点类似Net的CodeFirst了
稍微记录下Django2.2使用MariaDB和MySQL遇到的坑

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

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

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

创建超级管理员

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

在admin中注册对应的模型类

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

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

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

登录页面

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

后台管理主页

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

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

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

我随便创建了几个用户

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

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

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

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

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

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

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