Django规定,如果要使用数据库模型,必须要创建一个app。
MySQL的安装配置
window系统
前往MySQL官网https://dev.mysql.com/downloads/mysql/下载window版的MySQL Community Server 8.0.15的压缩包,如下图:

把压缩包解压到某一路径,我解压到D:\Program Files,在刚刚解压的文件夹D:\Program Files\mysql-8.0.15-winx64内,新建一个data文件夹,并新建一个my.ini文件,里面的内容如下:
| 1 |  | 
以管理员身份运行终端,进入mysql目录下的bin文件夹:
| 1 |  | 
运行一下命令初始化数据库:
| 1 |  | 
执行完成后会产生root用户默认密码,这个密码务必要记住,后面会用到:
| 1 |  | 
然后执行安装命令:
| 1 |  | 
然后便可以开启mysql服务:
| 1 |  | 
若开启服务时出现系统错误2,则先卸载再重新安装:
| 1 |  | 
开启服务后,执行以下命令进入mysql的终端,密码为之前初始化数据库时生成的默认密码:
| 1 |  | 
然后执行以下命令修改密码永不过期,这样可以避免密码失效的问题:
| 1 |  | 
然后执行以下命令修改密码模式,否则后面再Django中连接数据库时会出现RuntimeError: cryptography is required for sha256_password or caching_sha2_password错误:
| 1 |  | 
然后刷新权限:
| 1 |  | 
之前的默认密码不好记,这里我们改为自己熟悉的密码,这里我直接改为”123456”:
| 1 |  | 
最后,我们要在mysql终端中创建一个database:
| 1 |  | 
查看和删除database的命令如下:
| 1 | 
 | 
这样,在后面的Django中,我们就可以连接名为my_blog_db的database了,
ubuntu系统
前往mysql官网下载https://dev.mysql.com/downloads/repo/apt/deb包,如下图:

下载完成后,在deb包所在的文件夹下打开终端,执行以下命令:
| 1 |  | 
然后直接选择”OK“,如下图:

然后执行更新语句:
| 1 |  | 
然后进行安装:
| 1 |  | 
接着便是在安装界面中输入root密码,这个密码务必要记住,后面会用到。
然后是阅读配置MySQ社区服务器条例,按键盘上的”右“方向键,即可选择”OK“按钮,回车即可。
接下来是重要的密码加密方式,我们选第二个,如下图:

因为新版mysql的密码加密方式很多地方都暂时不支持,所以选第二个旧版的密码加密方式。
安装完成之后,便可以在终端中登录进mysql,密码是123456:
| 1 |  | 
然后创建一个database
| 1 |  | 
这样,在后面的Django中,我们就可以连接名为my_blog_db的database了,
查看和删除database的命令如下:
| 1 | 
 | 
最后是mysql服务的开启和关闭:
| 1 |  | 
如果提示系统权限限制,就先获取 root 权限,再开启 mysql 服务:
| 1 |  | 
Django连接MySQL
window系统
首先安装PyMySQL:
| 1 | 
 | 
然后安装mysqlclient:
前往https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient,根据系统的python版本选择对应的mysqlclient文件,如下图:

下载到本地后,在终端中进入该文件所在的文件夹,执行以下命令即可:
| 1 |  | 
接着便是修改settings.py文件,如下:
| 1 | 
 | 
写了models.py文件后(之后介绍如何写models.py操作数据库),执行以下命令:
| 1 |  | 
若出现django.db.utils.OperationalError: (2059, < NULL >)错误,则在django项目的__init__.py文件中添加:
| 1 |  | 
若出现django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11错误,则找到Python安装路径下的Python37-32\Lib\site-packages\django\db\backends\mysql\base.py文件,将文件中的以下代码注释:
| 1 |  | 
若出现AttributeError: 'str' object has no attribute 'decode'错误,则找到python安装路径下的Python37-32\Lib\site-packages\django\db\backends\mysql\operations.py,在第146行改动以下代码,即把decode改为encode:
| 1 |  | 
最后执行:
| 1 |  | 
成功之后,便可以在view.py中进行数据库的增删改查各种操作
ubuntu系统
ubuntu系统自带了python2和python3,所以写命令时,务必把python命令写成python3,pip命令也写成pip3。
首先安装PyMySQL:
| 1 | 
 | 
然安装libmysqld-dev:
| 1 |  | 
有可能会出现以下错误:

这是我们要先安装对应版本的libmysqlclient-dev:
| 1 |  | 
然后再重新安装libmysqld-dev。
最后安装mysqlclient:
| 1 |  | 
接着便是修改settings.py文件,如下:
| 1 | 
 | 
写了models.py文件后(之后介绍如何写models.py操作数据库),执行以下命令:
| 1 |  | 
若出现错误,参考前面window系统下的错误处理方法。
最后执行:
| 1 |  | 
成功之后,便可以在view.py中进行数据库的增删改查各种操作。
数据库的使用
定义模型
Django 规定,如果要使用模型,必须要创建一个app。我们使用以下命令创建一个 TestModel 的 app:
| 1 |  | 
并且记得把 app 名称添加到 setting 文件里面。
然后我们修改 TestModel/models.py 文件,代码如下:
| 1 |  | 
模型字段的定义可以增加一些修饰符,如:
- 声明主键 primary_key=True
- 默认值为空 default=None, null=True
- 字符串长度限制 max_length=11
- 自动添加当前时间 auto_now_add=True
- ……
然后再命令行中执行:
| 1 |  | 
操作数据库
我们通过匹配 url,分配给 view 中的函数,使用 view 中的函数进行数据库操作和静态文件返回等等。
添加数据
添加数据需要先创建对象,然后再执行 save 函数,相当于SQL中的INSERT:
| 1 |  | 
默认字段可以指明,也可以省略。
获取数据
Django提供了多种方式来获取数据库的内容,如下代码所示:
| 1 |  | 
更新数据
| 1 |  | 
删除数据
| 1 |  | 
 
          