SQLAlchemyProtocol
类型源码
db: SQLAlchemyProtocol
和Flask SQLAlchemy兼容的协议。
Flask SQLAlchemy已经维护了多年,拥有庞大的社区和大量用户,并且长期地在各种应用中、支持许多插件。然而,有鉴于SQLAlchemy深度依赖于现代的类型注解系统,该包与SQLAlchemy<2
更契合。这个老旧的扩展包、与新的SQLAlchemy之间还存在许多未解决的兼容性问题。
特别时对于使用Python<3.9
的用户来说,该包仍然是不二选择,因为Flask SQLAlchemy Lite不支持旧的Python版本。
该协议涵盖了flask_sqlalchemy.SQLAlchemy
的大多数、但非全部功能。
别名
该类型可以按以下方式之一获取
import flask_sqlalchemy_compat as fsc
fsc.SQLAlchemyProtocol
fsc.protocols.SQLAlchemyProtocol
协议方法
init_app
db.init_app(app: Flask)
使用该扩展实例来初始化Flask应用。必须在访问数据库的engine或会话之前,调用该方法。
协议属性
engine
db.engine: sa.engine.Engine
当前应用关联的默认engine。
engines
db.engines: Mapping[str | None, sa.engine.Engine]
当前应用下、绑定关键字到sqlalchemy.engine.Engine
的映射。关键字None
引用到默认engine。
session
db.session: sa_orm.scoped_session[Any]
当前应用的默认会话。在离开应用上下文时、自动关闭。
metadatas
db.metadatas: Mapping[str | None, sa.MetaData]
当前应用下、绑定关键字到sqlalchemy.schema.MetaData
的映射。关键字None
引用到默认engine。
metadata
db.metadata: sa.MetaData
未指定绑定关键字的情况下,Model
与Table
所使用的默认元数据。
Query
db.Query: Callable[..., sa.orm.Query]
Model.query
与lazy="dynamic"
关系所使用的默认检索类。
Table
db.Table: Callable[..., sa.Table]
无需显式指定元数 据的默认数据表类。
Model
db.Model: Callable[..., ModelProtocol]
具备扩展功能的默认对象关系映射模型类。
- 其中
ModelProtocol
是Flask SQLAlchemy所定制的模型类的协议。