什么是模型
- 模型是一个python类它是由django.db.models.Model派生出的子类
- 一个模型代表数据库中的一张表
- 模型类的每一个属性都代表数据库中的一个字段
- 模型是数据交互的接口,是表示和操作数据库的方法和方式
ORM框架
定义
ORM(Object Relational Mapping)即对象关系映射,它是一种程序技术,它允许你使用类和对象对数据库进行操作,从而避免通过SQL语句操作数据库
作用
- 建立模型类和表之间的关系,允许我们通过面向对象的方式来操作数据库
- 根据设计的模型类生成数据库中的表格
- 通过简单的配置就可以进行数据库的切换
优点
- 只需要面向对象编程,不需要面向数据库编写代码
- 对数据库的操作都可以转化成对类属性和方法的操作
- 不用编写各种数据库的SQL语句
- 实现了数据模型和数据库的解耦,屏蔽了不同数据库操作上的差异
- 不在关注用的是mysql、Oracle等数据库的内部细节
- 通过简单的配置就可以轻松的更改数据库,而不需要修改代码
缺点
- 对于复杂业务,使用成本高(中间python代码运行成本)
- 根据对象操作转换成SQL语句,根据查询的结果转换成对象,在映射过程中有性能损失
代码示例
class Book(models.Model):
title = models.CharField('书名', max_length=50, default='', unique=True)
pub = models.CharField('出版社', max_length=100, null=False, default='中国传媒大学出版社')
price = models.DecimalField('价格', max_digits=7, decimal_places=2, default=0.0) # 00000.00
market_price = models.DecimalField('零售价', max_digits=7, decimal_places=2, default=0.0)
数据库迁移
- 迁移是Django同步您对模型所做的更改(添加字段,删除模型等)到您的数据库模式的方式
- 生成迁移文件 -执行 python manage.py makemigrations
向应用下的models.py文件生成一个中间文件,并保存在migrations文件夹中 - 执行迁移脚本程序 - 执行 python manage.py migrate
执行迁移程序实现迁移。将每个应用下的migrations目录中的中间文件同步回数据库