【Django】一、 模型(Models)之初识

【Django】一、 模型(Models)之初识

前言:Django 通过建立一个数据库映射,来用一套代码管理所有类型数据库操作。应用时,只需配置数据库信息,然后用一套代码对其进行管理即可。

文章目录

  • 【Django】一、 模型(Models)之初识
    • 1. 引入
    • 2. 管理
    • 3 迁移
    • 4 查看 ∗ ^{*}
      • 4.1 SQLite数据库
      • 4.2 MySQL数据库

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都实际映射为数据库中一个表

下面通过一个官方示例来解释上面的一些信息。

代码示例:

## 数据库示例
## 自官方文档: https://docs.djangoproject.com/en/4.1/intro/overview/

# 引入django数据库包
from django.db import models

# 通过继承,新建表 Reporter
# 表中包含 full_name 字段
class Reporter(models.Model):
    full_name = models.CharField(max_length=70)

    def __str__(self):
        return self.full_name

# 通过继承,新建表 Article
# 表中包含 pub_data, headline, content, reporter 字段
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

示例说明:

  • ReporterArticle 即为两个模型,通过继承django.db.models.Model得到,也就是对应于数据库两个表。

  • 各自类中声明的变量也就是对应于各自表中的字段。如full_namepub_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 查看 ∗ ^{*}

数据库新建后,会生成对应的数据库文件,针对不同数据库,可通过以下方式对数据库文件进行查看

4.1 SQLite数据库

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

4.2 MySQL数据库

你可能感兴趣的:(Django,django,数据库,python,后端)