摘要:本文我们主要探讨下Model层在django是怎么工作的。
1. makemigrations后面做了什么
上一篇文章中我们说到创建好blog/models.py中的内容后,执行python manage.py makemigrations就会自动创建表结构,那么执行这个命令的背后,django框架又给我们做了什么呢?
其实,在这个命令后面我们还可以接上app的名字,表示指定app来创建或更新表结构,这个对于一个项目有多个app来说特别有用,所以我们可以把命令变成:
python manage.py makemigrations blog
此时,我们会发现在blog目录中多了如下几个东东:
此时会生成一个migrations的文件夹,有一个叫0001_initial.py的文件,这个文件的内容其实我们不要太关心,它只是记录你操作的过程,当我们继续修改Model层时,会生成0002,0003开头的文件。那么我们如何来看django给我们生成的sql语句呢?只需要执行以下语句即可:
python manage.py sqlmigrate blog 0001
其中,blog是app名称,0001表示0001_initial.py记录的操作过程,此时应该可以看到如下输出:
BEGIN;
CREATE TABLE `blog_userinfo` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `username` varchar(256) NOT NULL, `password` varchar(256) NOT NULL);
COMMIT;
其实这是django框架给我们全部做好了这个数据库与模型层的映射关系,即ORM。
1.1 什么是ORM?
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
1.2 ORM有什么优缺点?
优点:摆脱复杂的SQL操作,适应快速开发,让数据结构变得简洁;数据库迁移成本更低(如从mysql->oracle)
缺点:性能较差、不适用于大型应用,复杂的SQL操作还需通过SQL语句实现。
2. ORM的关系映射
基本和数据库关键映射类似,即:
一对一的关系
一对多的关系
多对多的关系
这里我们先不讨论,以免加大了学习的难度,后面的文章中再继续学习。
- 微信扫码赞助
- 支付宝赞助