Flask开发(十九)Flask访问数据库 初识Flask-SQLAlchemy
内容纲要
本篇导读:
- SQLAlchemy及相关依赖的安装
- 对象关系映射实质
- 使用ORM的意义
SQL-Alchemy是一个基于Python实现的ORM(Object Relational Mapping,对象关系映射)框架。该框架建立在DB API之上,使用对象关系映射进行数据库操作。价而言之便是将类和对象转换为SQL语句,然后使用数据API执行SQL并获取执行结果。他的核心思想在于将关系数据库表中记录映射成对象,以对象的形式展示,程序员可以把对数据库的操作转化为对对象的操作。
SQLAlchemy及相关依赖的安装
安装Flask-SQLAlchemy框架可以使用以下命令:
pip install flask-sqlalchemy
也可以使用PyCharm中输入Flask-SQLAlchemy直接安装。
如果连接的是MySQL数据库,则需要安装PyMySQL,使用命令pip install pymysql安装。
对象关系映射实质
现有一个SQL语句如下:
create table book(`id` int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT, `title` varchar(50), `publish_office` varchar(100), `isbn` varchar(4));
还有一个book对象:
class Book(db.Model): __tablename__='book' id=db.Column(db.Integer,primary_key=True,autoincrement=True) title=db.Column(db.String(50),nullable=False) publishing_office=db.Column(db.String(100),nullable=False) isbn=db.Column(db.String(100),nullable=False)
能否建立以下3点对应关系呢?
- book类->数据库中的一张表
- book类中的属性->数据库中的一张表中的字段
- book类的一个对象 -> 数据库中的一条记录(数据)
答案是显而易见的。falsk-sqlalchemy能帮我们建立这几种对应关系。
Flask-SQLAlchemy这个ORM框架使我们操作数据库变成了操作对象,一个表被抽象成了一个类,一个表中的字段被抽象成了一个类中的多个属性,一条数据就被抽象成了该类的一个实例对象,不用再写繁琐的SQL语句了。关系数据库的表与对象的映射还可以用一张表来进一步概括:
面向对象概念 | 面向关系概念 |
---|---|
类 | 表 |
属性 | 表的字段 |
对象 | 表的一行记录 |
为什么使用ORM
以下是ORM的优点:
- 简单:ORM以最基本的形式建模数据。比如ORM会将MySQL的一张表映射成一个类(模型),表的字段就是这个类的成员变量。
- 精确:ORM使所有的MySQL数据表都按照统一的标准精确地映射成一个类,使系统在代码层面保持准确统一。
- 易懂:ORM使数据库结构文档化,程序员可以把大部分精力用在Web功能的开发和实现上,而不需要花费时间和精力在底层数据库驱动上。
- 易用:ORM包含对持久化类对象进行CRUD操作的API,例如create()、update()、save()、load()、find()、find_all()、where()等,也就是将SQL查询全部封装成了编程语言的函数,通过函数的链式组合生成最终的SQL语句。通过这种封装避免了不规范、冗余、风格不统一的SQL语句,可以避免很多人为BUG,方便编码风格的统一和后期维护。
综上所述,使用ORM框架的最大优点是解决了重复读取数据库的问题,使程序员高效开发成为可能。最大的不足之处在于会牺牲程序的执行效率,特别是处理多表联查、where条件复杂之类的查询时,ORM语法会变得复杂。
阅读剩余
版权声明:
作者:雪落长安
链接:https://blog.wlbc321.cn/index.php/2021/05/31/flask19/
文章版权归作者所有,未经允许请勿转载。
THE END