商务合作加Q:411239339

Django学习之路(9)——进一步了解Model工作原理

浏览:235次阅读
没有评论

共计 1027 个字符,预计需要花费 3 分钟才能阅读完成。


摘要 :本文我们主要探讨下 Model 层在 django 是怎么工作的。


1. makemigrations 后面做了什么


上一篇文章中我们说到创建好 blog/models.py 中的内容后,执行 python manage.py makemigrations 就会自动创建表结构,那么执行这个命令的背后,django 框架又给我们做了什么呢?

其实,在这个命令后面我们还可以接上 app 的名字,表示指定 app 来创建或更新表结构,这个对于一个项目有多个 app 来说特别有用,所以我们可以把命令变成:

python manage.py makemigrations blog

此时,我们会发现在 blog 目录中多了如下几个东东:

Django 学习之路 (9)——进一步了解 Model 工作原理

此时会生成一个 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 的关系映射

基本和数据库关键映射类似,即:

一对一的关系

一对多的关系

多对多的关系

这里我们先不讨论,以免加大了学习的难度,后面的文章中再继续学习。

正文完
扫码赞助
post-qrcode
 0
果子
版权声明:本站原创文章,由 果子 于2017-03-04发表,共计1027字。
转载说明:除特殊说明外本站文章皆由果较瘦原创发布,转载请注明出处。
评论(没有评论)