SQLAlchemyLiteProxy
类源码
db_proxy = SQLAlchemyLiteProxy[_SQLAlchemyDB_co](
db: _SQLAlchemyLiteDB_co,
)
flask_sqlalchemy_lite.SQLAlchemy
的代理类。
该类是针对普通版SQLAlchemy的封装。透过调整flask_sqlalchemy.SQLAlchemy
,来模拟flask_sqlalchemy_lite.SQLAlchemy
的用法。
须知并非所有来自flask_sqlalchemy_lite.SQLAlchemy
都能精准复刻。准确来说,该代理只完成了以下工作:
- 像
flask_sqlalchemy_lite.SQLAlchemy
那样、提供一个普通的会话(session),该普通会话由该代理类的实例管理。 - 提供
flask_sqlalchemy_lite.SQLAlchemy
的主要、基本的功能。用法完全等价,但具体的实现 是透过flask_sqlalchemy
完成的。 - 任何无法复刻的功能,都会抛出
NotImplementedError
。
别名
该类可以按以下方式之一获取
import flask_sqlalchemy_compat as fsc
fsc.SQLAlchemyLiteProxy
fsc.flask_sa_lite_api.SQLAlchemyLiteProxy
参数
参数 | 类型 | 必选 | |
---|---|---|---|
db | _SQLAlchemyDB_co | 用来导出session和engine实例的数据库扩展。 由 |
- 其中,
_SQLAlchemyDB_co
是fsc.protocols.SQLAlchemyProtocol
的TypeVar
。
方法
init_app
db_proxy.init_app(
app: Flask,
)
按照Flask.config
创建engine,并将数据库扩展注册到应用中。
输入
参数 | 类型 | 必选 | |
---|---|---|---|
app | Flask | The application to register. |
get_engine
db_proxy.get_engine(
name: str = "default"
)
获取当前应用关联的某个engine。
属性engine
可用来获取默认engine,其实现可视为该方法无参调用的语法糖。
输入
参数 | 类型 | 必选 | |
---|---|---|---|
name | str | engine的名字。 |
输出
参数 | 类型 | |
---|---|---|
engine | sa.engine.Engine | 按照名字获取到的engine。 |
get_session
sess: sa.orm.Session = db_proxy.get_session(
name: str = "default"
)
创建一个sa.orm.Session
,并预定在离开应用上下文时关闭它。在同一应用上下文内、以相同的参数、反复调用该方法,将会返回同一会话。
属性session
可用来获 取默认会话,其实现可视为该方法无参调用的语法糖。
输入
参数 | 类型 | 必选 | |
---|---|---|---|
name | str | 用来寄存会话的独一名称。 |
输出
参数 | 类型 | |
---|---|---|
sess | sa.orm.Session | 按照名字获取到的会话。 |
get_async_engines
db_proxy.get_async_engines(*args: Any, **kwargs: Any)
该代理类并未实现该方法。
get_async_session
db_proxy.get_async_session(*args: Any, **kwargs: Any)
该代理类并未实现该方法。
属性
db
db: _SQLAlchemyDB_co = db_proxy.db
Flask SQLAlchemy Lite扩展所提供的db
实例。
sessionmaker
sessionmaker: sa.orm.sessionmaker[sa.orm.Session] = db_proxy.sessionmaker
和flask_sqlalchemy_lite.SQLAlchemy().sessionmaker
相同。
当前应用所设置的会话工厂类,可直接用来创建会话。但须知透过这种方式创建的会话、不会在离开应用上下文时、自动关闭。若需要该功能,建议使用session
或get_session
。
此工厂类亦可用于在self.init_app
之后更新会话选项。具体的做法时调用它的sa.orm.sessionmaker.configure
方法。
session
sess: sa.orm.Session = db_proxy.session
和flask_sqlalchemy_lite.SQLAlchemy().session
相同。
当前应用的默认会话。在离开应用上下文时、自动关闭。
engines
engines: dict[str, sa.engine.Engine] = db_proxy.engines
和flask_sqlalchemy_lite.SQLAlchemy().engines
相同。
这是注册在该扩展内的所有具名engine构成的字典。
engine
engine: sa.engine.Engine = db_proxy.engine
和flask_sqlalchemy_lite.SQLAlchemy().engine
相同。
当前应用关联的默认engine。
async_engines
db_proxy.async_engines
该代理类并未实现该属性。
async_engine
db_proxy.async_engine
该代理类并未实现该属性。
async_sessionmaker
db_proxy.async_sessionmaker
该代理类并未实现该属性。
async_session
db_proxy.async_session
该代理类并未实现该属性。