前言:Django 通过建立一个数据库映射,来用一套代码管理所有类型数据库操作。应用时,只需 配置数据库信息,然后用一套代码对其进行 管理即可。
1. 引入
Django模型主要是用来关联数据库,相当于一个ORM(Object Relational Mapping)系统。
ORM(Object Relational Mapping)是指对象关系映射,是一种程序设计与软件工程技术。可以用于实现面向对象编程中不同类型系统之间的数据转换。
近一步地,可以将Django模型其理解为是连接着上层编程语言与底层实体数据库的桥梁。
更近一步地,也即我们可以直接用python使用同一数据库描述对象来完成不同的数据库操作。
当前django 支持数据库包括 SQLite, MySQL, Oracle, MariaDB, PostgreSQL等。
这就是通过Django模型来实现的,我们只需要关注业务代码业务逻辑,而不必关注具体的数据库类型。
2. 管理
Django模型就可以通俗理解为data model,也即数据模型。也就是数据库。
- 数据库模型一般写在
models.py
中 - 数据库配置一般写在
settings.py
中 models.py
中通过引入django.db.models
模块进行管理- 每一个
model
通过继承django.db.models.Model
来新建 - 每一个
model
都实际映射为数据库中一个表
下面通过一个官方示例来解释上面的一些信息。
代码示例:
from django.db import models
class Reporter(models.Model):
full_name = models.CharField(max_length=70)
def __str__(self):
return self.full_name
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
content = models.TextField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
def __str__(self):
return self.headline
示例说明:
Reporter
和Article
即为两个模型,通过继承django.db.models.Model
得到,也就是对应于数据库两个表。- 各自类中声明的 变量也就是对应于各自表中的 字段。如
full_name
和pub_date
,headline
,content
,reporter
等。 django.db.models.xxxField
标志着 变量的类型,也即数据库中字段类型。__str__
为python类的常用魔法函数,作用是当打印此类时,显示该函数返回内容。
3 迁移
通过上述操作可以完成数据库操作命令的编写,包括新建类(也即新建表)、变量设置(也即字段设置)。
但以上这些只是操作代码,如果要生成实体的数据库文件,需要去执行它,去完成实际数据库的生成/修改/迁移。
django数据库的迁移,通常需要两个步骤:
- 检查**
> python manage.py makemigrations
作用:
makemigrations
作用是让Django去检查创建或修改的数据库,如果不合法会给出提示,生成sql语句,但还未将真正改动迁移到数据库 效果:
第一次执行时,会在migrations/
下创建0001_inital.py
文件,记录建表及依赖信息。 后续执行时,会在migraitons/
下创建类似0002_xxx.py
文件,记录修改的字段。
$ python manage.py sqlmigrate
- 迁移
> python manage.py migrate
作用:
migrate
作用是执行sql语句,将上述记录的修改应用到数据库中,将真正改动迁移到数据库中,完成实际的表的修改、新建等操作
4 查看 ∗ ^{*}∗
数据库新建后,会生成对应的数据库文件,针对不同数据库,可通过以下方式对数据库文件进行查看
SQLite是一个进程内的库,无服务器、无依赖、无配置、无安装、轻量级、事务性。
Django中已经配置了SQLite数据库,默认情况下,即使用该库作为后端数据的管理操作。
- 使用命令行查看
默认下,可以在终端输入 > sqlite3
完成一些SQLite操作,常用命令如下
.open sql_name // 打开数据库
.table // 查看所有表
.schema table_name // 查看表结构
select * from table_name // 查看表信息
INSERT INTO table_name VALUES (x, y, z ...) // 向表内插入数据
.quit // 退出sqlite
至于其他的 CRUD
操作,可自行搜索和学习。
- 使用软件查看
Windows 下,可以使用 sqlitespy 软件查看
db.sqlite3
文件;
Mac下,可以使用 sqlitebrowser、SQLiteStudio 软件查看db.sqlite3
文件Original: https://blog.csdn.net/deepsprings/article/details/128266655
Author: 天真的和感伤的想象家
Title: 【Django】一、数据库
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/736118/
转载文章受原作者版权保护。转载请注明原作者出处!