现在演示一下整个流程吧

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遇到的坑的更多相关文章

  1. centos7下yum快速安装 mariadb(mysql)

    从最新版本的centos系统开始,默认的是 Mariadb而不是mysql! 使用系统自带的repos安装很简单: yum install mariadb mariadb-server systemc ...

  2. 分布式监控系统Zabbix--完整安装记录(7)-使用percona监控MySQL

    前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择 ...

  3. Linux下CenOS系统 安装MariaDB

    1.首先去MariaDB官网下载安装包,首页是:https://mariadb.org/ 2.放在linux下的新建目录下:/root/mariadb 然后解压缩,命令为:tar -xzvf mari ...

  4. 随便记录下系列 - node->express

    随便记录下系列 - node->express 文章用啥写?VsCode. 代码用啥写?VsCode. 编辑器下载:VsCode 一.windows下安装node.js环境: 下载地址 相比以前 ...

  5. 记录下UIButton的图文妙用和子控件的优先显示

    UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景: 另外记录下在父控件的子控件优先显示方法(控件置于最前面和置于最后面). 先上效果图: 1 ...

  6. 记录下ECharts的一些功能

    用到ECharts记录下一些功能免得以后找文档找不到. 这个博客对ECharts讲解很全面 http://www.stepday.com/my.stepday/?echarts // 使用 requi ...

  7. C#值类型以及默认值记录下

    C#的值类型有bool,byte,sbyte,decimal,double,float,int,uint,long,string等 如果我们擅长使用默认值,可以帮助我们减少带来赋值及代码编写. 比如我 ...

  8. 记录下mybatis中#{}和${}传参的区别

    最近在用mybatis,之前用过ibatis,总体来说差不多,不过还是遇到了不少问题,再次记录下, 比如说用#{},和 ${}传参的区别, 使用#传入参数是,sql语句解析是会加上"&quo ...

  9. 记录下url拼接的多条件筛选js

    本着为提高工作效率百度或者google这些代码发现拿过来的都不好用,然后自己写了个,写的一般但记录下以后再优化 <html> <head> <script> $(f ...

随机推荐

  1. 浏览器的同源策略及CORS跨域解决方案 DRF

    一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例: UR ...

  2. Android远程桌面助手(B1391)

    ARDC(B1391), Download:https://files.cnblogs.com/files/we-hjb/ARDC%28B1391%29_EN.7z Android远程桌面助手(B13 ...

  3. .NET Core 学习笔记2——管理nuget包

    .NET Core 基于Nuget包.它是一个.nupkg后缀的zip文件. 工具 dotnet 工具 vs2017 的程序包管理控台 这两个工具都可以用命令行来下载安装,更新,上传包(上传要先在网站 ...

  4. pyspider爬网页出现中文乱码的解决办法

    为什么会出现乱码呢?按照binux的说法 这就是 lxml 的蛋疼之处,给它 unicode 它有的时候它不认,给它 bytes 它又处理不好 方法1: response.content = (res ...

  5. 《SQL CookBook 》笔记-第三章-多表查询

    目录 3.1 叠加两个行集 3.2 合并相关行 3.3 查找两个表中相同的行 3.4 查找只存在于一个表中的数据 3.5 从一个表检索与另一个表不相关的行 3.6 新增连接查询而不影响其他连接查询 3 ...

  6. Golang学习:sublime text3配置golang环境

    最近导师让学习golang, 然后我就找了些有关golang的学习视频和网站. 昨天在电脑上下载了go tools, 之后在sublime上配置了golang的运行环境.By the way, 我的电 ...

  7. python3.6+selenium3.13 自动化测试项目实战一

    自己亲自写的第一个小项目,学了几天写出来的一个小模块,可能还不是很完美,但是还算可以了,初学者看看还是很有用的,代码注释不是很多,有问题可以加我QQ 281754043 一.项目介绍 目的: 测试某官 ...

  8. Parameter 'ids' not found. Available parameters are [array]

    传的参数是一个数组, Long[] ids 后台错误写法 <delete id="deleteById"> delete from table where id in ...

  9. GDB调试指南-变量查看

    前言 在启动调试以及设置断点之后,就到了我们非常关键的一步-查看变量.GDB调试最大的目的之一就是走查代码,查看运行结果是否符合预期.既然如此,我们就不得不了解一些查看各种类型变量的方法,以帮助我们进 ...

  10. js常用写法

    遍历数组 ES5 写法 arr.forEach(function(value,index){ console.log(index+'--'+value); }) 遍历数组  ES6 写法 for( l ...