ORM简介
MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库
Object-Relational-Mapping是“对象-关系-映射”的简称,主要任务是:
(1) 根据对象的类型生成表结构
(2) 将对象、列表的操作,转换为sql语句
(3) 将sql查询到的结果转换为对象、列表
这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动
Django中的模型包含存储数据的字段和约束,对应着数据库中唯一的表
简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
ORM在业务逻辑层和数据库层之间充当了桥梁的作用。
ORM的优势
ORM解决的主要问题是对象和关系的映射。
它通常把一个类和一个表一一对应
类的每个实例对应表中的一条记录
类的每个属性对应表中的每个字段
ORM提供了对数据库的映射,不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。
让软件开发人员专注于业务逻辑的处理,提高了开发效率。
ORM的劣势
ORM的缺点是会在一定程度上牺牲程序的执行效率。
ORM用多了SQL语句就不会写了,关系数据库相关技能退化...
ORM总结
ORM只是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。
但我们不能指望某个工具能一劳永逸地解决所有问题,一些特殊问题还是需要特殊处理的。
但是在整个软件开发过程中需要特殊处理的情况应该都是很少的,否则所谓的工具也就失去了它存在的意义。
Django框架中ORM示意图
使用MySql数据库
在虚拟环境中安装mysql包
pip3 install pymysql
在mysql中创建数据库
create databases test2 charset=utf8
打开settings.py文件,修改DATABASES项
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
'NAME':'test2',#数据库名字,
'USER':'root',#数据库登录用户名'
PASSWORD':'mysql',#数据库登录密码'
HOST':'localhost',#数据库所在主机'
PORT':'3306',#数据库端口
}
}
需要在我们项目的init文件
import pymysql
pymysql.install_as_MySQLdb()
开发流程
(1) 在models.py中定义模型类,要求继承自models.Model
(2) 把应用加入settings.py文件的installed_app项
(3) 生成迁移文件 (python manage.py makemigrations)
(4) 执行迁移生成表 (python manage.py migrate)
(5) 使用模型类进行 crud(增、删、改、查) 操作
使用数据库生成模型类(了解即可)
python manage.py inspectdb > booktest/models.py
网友评论