Django 笔记二之连接数据库、执行 migrate 数据结构更改操作
本文首发于微信公众号:Hunter 后端
本篇笔记目录索引如下:
Django 连接 mysql,执行数据库表结构迁移步骤介绍
操作数据库,对数据进行简单操作
接下来几篇笔记都会介绍和数据库相关,包括数据库的连接、操作(包括增删改查)、对应的字段类型、model 里 Meta 相关参数和 QueryAPI 的详解等。
这一篇先介绍数据库的连接和简单的增删改查操作。
首先介绍一些 Django 的操作表的逻辑,Django 提供了一套非常方便的 orm 方法,可用于 Django 能直接对表和数据进行增删改查,对应的数据库里每一张表都有一个对应的 model 的 class,class 下每一个字段都对应 mysql 中表的字段,我们在 Django 中定义好这些内容,然后通过命令迁移到 数据库中来完成修改。
1、Django 连接 mysql
前一篇笔记我们创建了 一个 名为 polls 的 application,接下来我们要在 polls 下面建立和数据库的连接。
连接上 mysql 分为以下几步:
安装依赖
创建数据库
修改 settings.py 填写数据库信息
迁移默认表
定义 model 信息
生成 migrations 文件
执行表的迁移
安装依赖
Django 和 mysql 连接需要安装一个 driver,我们这里选择 mysqlclient,以下是安装命令:
还是通过 -i 指定源,加速安装。
创建数据库
可以自己在服务器或者本地安装一个可以运行的 mysql,我这里安装的是 mysql 5.7 版本。
创建数据库的时候记得指定编码为 utf-8:
在这里,数据库名称为 func_test,库编码为 utf-8。
修改 settings.py 填写数据库信息
在 hunter/settings.py 文件下,有一个 DATABASES 的变量,将其修改为以下内容:
其中,default 表示系统默认连接的数据库,一个 Django 系统可以连接多个数据库,可以通过这个地方定义变量名称来指定。如果需要连接多个数据库,后续的操作可以再介绍。在使用的时候通过 using() 来区分 ENGINE:在这里值为 django.db.backends.mysql ,表示连接的数据库类型是 mysqlNAME:表示连接的数据库名称,在这里我们指定的是 func_testUSER:连接数据库使用的用户名 PASSWORD:连接数据库用户名对应的密码 HOST:你的数据库的地址,本地的话是 localhost 或者 127.0.0.1,服务器上填写相应的 ip 即可 PORT:端口,mysql 默认是 3306
以上的那些变量,记得更换成本地的变量。
好了,关于数据库的基本连接配置就都设置完成了。
迁移默认表
Django 系统里是有一些默认的配置表的,比如用户表,如果使用 Django 的默认用户系统的话可以用上 django_session 表,用于记录用户的登录的 session 相关记录 django_migrations 表,记录每一次表及字段的创建和修改操作等等
这些表,在我们执行以下操作命令的时候,会自动写入数据库:
定义 model 信息
在上一篇笔记里我们创建了一个名为 polls 的 application,里面有一个 models.py 的文件,然后我们编辑该文件,内容如下:
在上述文件里,每一个 class 代表着一张表,每一行都代表着 表里的一个字段,字段的类型在上述的文件里对应数据库的类型为:CharField:varcharDateTimeField:datetimeIntegerField:intForeignKey:外键这个类型我们后续会再介绍,这里只做一个简单的介绍。
然后我们还需要将我们这个 model 注册到我们的 settings.py 里的 INSTALLED_APPS:
生成 migrations 文件
我们定义好 model 文件之后,在生成表结构之前,我们还需要生成一个 记录表结构变化的文件,也就是我们的 migrations 文件,每一次修改都可以生成一个新的 migration 文件,然后写入数据库,该文件存放在 每一个 application 的 migrations 文件夹下面。生成 migrations 文件命令:
然后我们可以看到在 polls/migrations/ 文件夹下多了一个 0001_initial.py
执行表的迁移
然后执行下面的命令,Django 会根据系统里上一次在 django_migrations 表里记录的上一次执行的地方,检测我们系统里新增的 migrations 文件,自动将数据结构的更改适配到数据库里:
如果对 model.py 再进行一次更改,然后执行 makemigrations 命令,migrations 文件夹下会自动新增新的迁移命令。每一个新增的前面都会有序号标识,比如我们最开始的是 0001,之后每一次都会按照序号往后新增。有兴趣的可以看看 migrations 里的文件内容,那是 python 语言里对应 SQL 的更改内容,这里不做展开,有兴趣的可以看看。
如果我们想在每一次执行 migrate 前,查看会对数据库进行怎么样的更改,可以根据 我们上面说的 序号,来指定 migration 文件查看:
python3 manage.py sqlmigrate 是固定语法,polls 是对应的 application 的名称,0001 是每一次 migration 的前面的序号,这样就可以指定到 application 下的每一次更改。
比如上面那条命令,输出的结果如下:
会将转义执行到 数据库的语句打印出来。
2、操作数据库,对数据进行简单操作
现在我们根据上述的操作,创建了两张表和对应的 model,接下来介绍怎么对数据进行操作:
比如我们要创建一个 Question 数据,使用 Django 的语法来创建,可以通过 以下命令进入 Django 的交互界面:
然后挨个输入:
然后查看数据库,可以看到我们通过 save() 操作已经创建了一条数据了。
获取单个数据呢:
以上就是我们这一篇笔记的全部内容,下一篇笔记将详细介绍如果通过 Django 的 model 对数据进行增删改查的操作。
版权声明: 本文为 InfoQ 作者【Hunter熊】的原创文章。
原文链接:【http://xie.infoq.cn/article/7c5630af8c58a61d0af49d2a3】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论