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

Posted dotnetcrazy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了稍微记录下Django2.2使用MariaDB和MySQL遇到的坑相关的知识,希望对你有一定的参考价值。

现在演示一下整个流程吧

1.创建项目和应用

技术图片

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

2.注册应用

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

技术图片

3.配置mysql或者MariaDB

技术图片

4.PyMySQL替换默认的MySQLdb

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

技术图片

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

技术图片

5.创建数据库

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

技术图片

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,所以不用管它
技术图片

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

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

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

技术图片

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

技术图片

解决也很简单,改成encode即可
技术图片

8.再运行

再运行就没错误了

技术图片

但也没有什么东西

技术图片

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

技术图片

9.生成对应的数据库

先创建一个用户的模型类

技术图片

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

技术图片

这个有点类似Net的CodeFirst了
技术图片

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

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

技术图片

创建超级管理员

技术图片

在admin中注册对应的模型类

技术图片

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

技术图片

登录页面

技术图片

后台管理主页

技术图片

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

技术图片

我随便创建了几个用户

技术图片

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

技术图片

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

技术图片

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

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

以上是关于稍微记录下Django2.2使用MariaDB和MySQL遇到的坑的主要内容,如果未能解决你的问题,请参考以下文章

python 3.5 django2.2.8 安装xadmin

记录一次mariadb启动错误

类型错误:在 include().django2.2.2 的情况下,视图必须是可调用的或列表/元组

Linux系统下shell脚本实战之mariadb创建数据库和表

django2.2 版本static静态文件路径配置出错的问题解决方案。

Django2.2