跳到主要内容

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实例的数据库扩展。

flask_sqlachemy提供。封装该参数后,可以在参数来自非lite版的情况下、模拟flask_sqlalchemy_lite的行为。

方法

init_app

db_proxy.init_app(
app: Flask,
)

按照Flask.config创建engine,并将数据库扩展注册到应用中。

输入

参数类型必选
说明
appFlaskThe application to register.

get_engine

db_proxy.get_engine(
name: str = "default"
)

获取当前应用关联的某个engine。

属性engine可用来获取默认engine,其实现可视为该方法无参调用的语法糖。

输入

参数类型必选
说明
namestrengine的名字。

输出

参数类型
说明
enginesa.engine.Engine按照名字获取到的engine。

get_session

sess: sa.orm.Session = db_proxy.get_session(
name: str = "default"
)

创建一个sa.orm.Session,并预定在离开应用上下文时关闭它。在同一应用上下文内、以相同的参数、反复调用该方法,将会返回同一会话。

属性session可用来获取默认会话,其实现可视为该方法无参调用的语法糖。

输入

参数类型必选
说明
namestr用来寄存会话的独一名称。

输出

参数类型
说明
sesssa.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相同。

当前应用所设置的会话工厂类,可直接用来创建会话。但须知透过这种方式创建的会话、不会在离开应用上下文时、自动关闭。若需要该功能,建议使用sessionget_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
危险

该代理类并未实现该属性。