小白学Django系列:
用最短的时间学最多的知识,本文大约花费7分钟
本文内容:
1. ORM
2. 模型类的设计和表的生成
3. 通过模型类操作数据表
4. 模型类关系和关系查询
1. ORM
在如今很多的框架中,ORM已经应用的非常的广泛,什么是ORM呢?
ORM 全拼Object-Relation Mapping.
中文意思:对象-关系 映射
在我们所学的Django中的MVC或MVT中的M就采用了ORM。
它的作用是实现模型对象到关系型数据库数据的映射
比如把数据库中每条记录映射为一个模型对象:
图解ORM:
很明显采用ORM模型,有着很多的优点。它把面向数据库的编写代码转换成面向对象的编写,而且各种数据操作都转化成类中方法和属性的方法。除此之外,我们不用去写复杂的SQL语句。
当然除了上面的优点,这种面向对象的写法也让我们忽略了数据库的类型,无论是MYSQL、oracle都可以使用相同的方式,并且我们只需要修改配置文件即可切换数据库类型,不需要改动其他代码。
当然,缺点也有。通过这种面向对象的编程难免会比直接SQL语句的性能差一些,这个性能的差值主要是在映射的过程中丧失的。
2. 模型类的设计和表的生成
了解了ORM的含义,我们来体验一下Django框架中是如何具体运用的:
首先编写一个模型类
这里我们有book_title和book_date两个属性。
大家可能会对models的一些方法有疑惑,这里给大家总结了
# 书籍信息模型
class BookInfo(models.Model):
name = models.CharField(max_length=20) #图书名称
提示:Django根据属性的类型确定以下信息:
编写完我们的模型类之后,我们需要生成迁移文件:
执行完后,我们会发现migration文件夹中多出了几个文件:
并且在图中我标记的文件里有着迁移过后所产生我们刚写的模型类所对应的迁移类。
生成了迁移文件之后,我们还需要执行迁移文件,这样才会和我们的数据库映射起来(Django默认配置sqlite数据库,所以我们暂时使用sqlite,之后我们会配置成mysql)
执行迁移文件生成表:
python manage.py migrate
执行完成后,我们会发现我们的项目目录下产生了一个db.sqlite3的文件,这个文件就是sqlite数据库文件,我们通过命令行把这个文件打开
通过查看表的列属性
可以发现成功创建了我们模型类相对应的表。
3.通过模型类操作数据表
我们上面模型类和数据表都创建完了,接下来我们该怎么去添加、修改表中的数据呢?
早在最前面就跟大家说了ORM,也就是说我们可以直接通过对象来对数据库中的数据进行操作。
我们这里进入项目的shell命令中来给大家讲解操作数据库
执行完毕以后,我们去查看我们的sqlite数据库
可以看到我们通过对象储存的数据已经保存至数据库了。
(有关于操作数据库,知识点比较多,我会专门写一篇文章来详细说明)
4.模型类关系和关系查询
大家可以看到上图,我们在之前的模型类BookInfo基础上,加了一个People模型类,因为在一本书中可能会出现很多人物。由此我们会有一个一对多的关系,这种关系是怎么建立的,大家可以看到最后一句代码 ForeignKey()。
我们编写好两个模型类后,同样的步骤给People生成迁移文件,执行迁移文件创建表。
为了给大家演示,我们再次进入shell当中操作:
执行完后,我们来看看两个表之间的数据
可以看到,这两张表已经连接起来了
既然已经连接起来,我们自然是可以互相访问数据了
通过人物查找书籍:
查找书籍中的所有人物: