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 |
|