【Django】一、数据库

前言: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

示例说明:

  • 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 查看 ∗ ^{*}∗

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

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球