跳到主要内容

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

未指定绑定关键字的情况下,ModelTable所使用的默认元数据。


Query

db.Query: Callable[..., sa.orm.Query]

Model.querylazy="dynamic"关系所使用的默认检索类。


Table

db.Table: Callable[..., sa.Table]

无需显式指定元数据的默认数据表类。


Model

db.Model: Callable[..., ModelProtocol]

具备扩展功能的默认对象关系映射模型类。

  • 其中ModelProtocol是Flask SQLAlchemy所定制的模型类的协议。