版权声明:欢迎交流,转载请注明出处。 https://blog.csdn.net/u013034226/article/details/84189576
在前面的博客总结了四个session中的三个:
❶【Flask】4个session(一)状态保持及请求/应用向下文
❸【Flask】4个session(三)Flask_session扩展包
今天抽出时间把第四个写完,并总结一下他们之间的关系。
这第四个session是依存于Flask_SQLAlchemy的,所以我们从SQLAlchemy说起
❶什么是SQLAlchemy?
答:SQLAlchemy是一个关系型数据库框架,它提供了高层的 ORM 和底层的原生数据库的操作,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升。
一句话:就是对数据库的抽象!
那在Flask中SQLAlchemy是怎么实现的呢?↙
❷什么是Flask-SQLAlchemy?
答:Flask-SQLAlchemy是一个简化了 SQLAlchemy 操作的flask扩展,是SQLAlchemy的具体实现,封装了对数据库的基本操作。
举例:如果说动物园是SQLAlchemy,那Flask-SQLAlchemy只是其中的一只。
Flask-SQLAlchemy详细内容见☞【Flask】什么是Flask-SQLAlchemy?
❸应用举例
指定数据库:
# 配置连接数据库
SQLALCHEMY_DATABASE_URI = 'mysql://root:mysql@localhost/数据库名'
SQLALCHEMY_TRACK_MODIFICATIONS = False
导入,并实例化sqlalchemy对象
# 导入flask_sqlalchemy
from flask_sqlalchemy import SQLAlchemy
# 实例化sqlalchemy对象
db = SQLAlchemy()
具体使用:
# 提交数据到数据库中
try:
# 保存数据
db.session.add(news)
# 提交
db.session.commit()
except Exception as e:
current_app.logger.error(e)
# 回滚
db.session.rollback()
几个session之间的关系图:
1、2、3中的“session”互相配合实现了状态保持,4中的数据库回话对象是独立的,与状态保持无关。