本篇笔记目录索引如下:
- 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,以下是装置命令:
pip3 install mysqlclient -i https://mirrors.aliyun.com/pypi/simple/
还是通过 -i 指定源,减速装置。
创立数据库
能够本人在服务器或者本地装置一个能够运行的 mysql,我这里装置的是 mysql 5.7 版本。
创立数据库的时候记得指定编码为 utf-8:
create database func_test default character set='utf8'
在这里,数据库名称为 func_test,库编码为 utf-8。
批改settings.py 填写数据库信息
在 hunter/settings.py 文件下,有一个 DATABASES 的变量,将其批改为以下内容:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'func_test', "USER": "user", "PASSWORD": "password", "HOST": "xx.xx.xx.xx", "PORT": 3306, }}
其中,default 示意零碎默认连贯的数据库,一个 Django 零碎能够连贯多个数据库,能够通过这个中央定义变量名称来指定。
如果须要连贯多个数据库,后续的操作能够再介绍。在应用的时候通过 using() 来辨别
ENGINE:在这里值为 django.db.backends.mysql ,示意连贯的数据库类型是 mysql
NAME:示意连贯的数据库名称,在这里咱们指定的是 func_test
USER:连贯数据库应用的用户名
PASSWORD:连贯数据库用户名对应的明码
HOST:你的数据库的地址,本地的话是 localhost 或者 127.0.0.1,服务器上填写相应的 ip 即可
PORT:端口,mysql 默认是 3306
以上的那些变量,记得更换老本地的变量。
好了,对于数据库的根本连贯配置就都设置实现了。
迁徙默认表
Django 零碎里是有一些默认的配置表的,
比方用户表,如果应用Django的默认用户零碎的话能够用上
django_session表,用于记录用户的登录的 session相干记录
django_migrations表,记录每一次表及字段的创立和批改操作等等
这些表,在咱们执行以下操作命令的时候,会主动写入数据库:
python3 manage.py migrate
定义 model 信息
在上一篇笔记里咱们创立了一个名为 polls 的 application,外面有一个 models.py 的文件,而后咱们编辑该文件,内容如下:
from django.db import modelsclass Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published')class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)
在上述文件里,每一个class 代表着一张表,每一行都代表着 表里的一个字段,字段的类型在上述的文件里对应数据库的类型为:
CharField:varchar
DateTimeField:datetime
IntegerField:int
ForeignKey:外键
这个类型咱们后续会再介绍,这里只做一个简略的介绍。
而后咱们还须要将咱们这个 model 注册到咱们的 settings.py 里的 INSTALLED_APPS:
INSTALLED_APPS = [ 'polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',]
生成 migrations 文件
咱们定义好 model 文件之后,在生成表构造之前,咱们还须要生成一个 记录表构造变动的文件,也就是咱们的migrations 文件,每一次批改都能够生成一个新的 migration 文件,而后写入数据库,该文件寄存在 每一个 application 的 migrations 文件夹上面。
生成 migrations 文件命令:
python3 manage.py makemigrations polls
而后咱们能够看到在 polls/migrations/ 文件夹下多了一个 0001_initial.py
执行表的迁徙
而后执行上面的命令,Django会依据零碎里上一次在 django_migrations 表里记录的上一次执行的中央,检测咱们零碎里新增的 migrations 文件,主动将数据结构的更改适配到数据库里:
python3 manage.py migrate polls
如果对 model.py 再进行一次更改,而后执行 makemigrations 命令,migrations 文件夹下会主动新增新的迁徙命令。
每一个新增的后面都会有序号标识,比方咱们最开始的是 0001,之后每一次都会依照序号往后新增。
有趣味的能够看看 migrations 里的文件内容,那是 python 语言里对应 SQL 的更改内容,这里不做开展,有趣味的能够看看。
如果咱们想在每一次执行 migrate 前,查看会对数据库进行怎么样的更改,能够依据 咱们下面说的 序号,来指定 migration 文件查看:
python3 manage.py sqlmigrate polls 0001
python3 manage.py sqlmigrate 是固定语法,
polls 是对应的 application 的名称,
0001 是每一次migration的后面的序号,这样就能够指定到 application 下的每一次更改。
比方下面那条命令,输入的后果如下:
会将本义执行到 数据库的语句打印进去。
2、操作数据库,对数据进行简略操作
当初咱们根据上述的操作,创立了两张表和对应的 model,接下来介绍怎么对数据进行操作:
比方咱们要创立一个 Question 数据,应用Django的语法来创立,能够通过 以下命令进入 Django 的交互界面:
python3 manage.py shell
而后挨个输出:
from polls.models import Questionq = Question(question_text="quesiton_text_1", pub_date="2022-01-01 00:00:00")q.save()
而后查看数据库,能够看到咱们通过 save() 操作曾经创立了一条数据了。
获取单个数据呢:
q = Question.objects.get(id=1)print(q.question_text)
以上就是咱们这一篇笔记的全部内容,下一篇笔记将具体介绍如果通过 Django 的 model 对数据进行增删改查的操作。
本文首发于自己微信公众号:Django笔记。
原文链接:Django笔记二之连贯数据库、执行migrate数据结构更改操作
如果想获取更多相干文章,可扫码关注浏览: