连接

本文档描述如何访问传递给 Tortoise.init 调用的数据库配置中定义的别名的底层连接对象 (BaseDBAsyncClient)。

下面是一个简单的代码片段,展示如何访问接口

# connections is a singleton instance of the ConnectionHandler class and serves as the
# entrypoint to access all connection management APIs.
from tortoise import connections


# Assume that this is the Tortoise configuration used
await Tortoise.init(
    {
        "connections": {
            "default": {
                "engine": "tortoise.backends.sqlite",
                "credentials": {"file_path": "example.sqlite3"},
            }
        },
        "apps": {
            "events": {"models": ["__main__"], "default_connection": "default"}
        },
    }
)

conn: BaseDBAsyncClient = connections.get("default")
try:
    await conn.execute_query('SELECT * FROM "event"')
except OperationalError:
    print("Expected it to fail")

重要

tortoise.connection.ConnectionHandler 类已按照单例模式实现,因此当 ORM 初始化时,此类 tortoise.connection.connections 的单例实例将自动创建,并且在应用程序的生命周期内一直存在于内存中。在运行时修改或覆盖其行为的任何尝试都是有风险的,不建议这样做。

请参阅 此示例,了解如何在实践中使用此 API 的详细演示。

API 参考

class tortoise.connection.ConnectionHandler[source]
all()[source]

当前上下文 中的存储中返回连接对象列表。

返回类型:

List[BaseDBAsyncClient]

async close_all(discard=True)[source]

关闭当前上下文中存储中的所有连接。

默认情况下,所有已关闭的连接都将从存储中移除。

参数:
discard=True

如果False,所有连接对象都将关闭,但保留在存储中。

返回类型:

property db_config : DBConfigType

返回数据库配置。

这是初始化时传递给Tortoise.init方法的相同配置。

引发:

ConfigurationError – 如果在调用Tortoise.init方法之前访问此属性。

返回类型:

DBConfigType

discard(conn_alias)[source]

丢弃当前上下文中存储中的给定别名。

参数:
conn_alias

应丢弃连接对象的别名。

重要

在调用此方法之前,请确保已对提供的别名调用 conn.close(),否则会出现连接泄漏(悬空连接)。

返回类型:

Optional[BaseDBAsyncClient]

get(conn_alias)[源代码]

返回给定别名的连接对象,如果需要,则创建它。

用于访问给定别名的底层连接对象(BaseDBAsyncClient)。

参数:
conn_alias

必须获取连接的别名

引发:

ConfigurationError – 如果连接别名不存在。

返回类型:

BaseDBAsyncClient

reset(token)[源代码]

将底层存储重置为先前的上下文状态。

将存储状态重置为与提供的令牌关联的 上下文。重置存储状态后,在 旧上下文 中创建的任何其他 连接 都将复制到 当前上下文 中。

参数:
令牌

与存储状态必须重置到的 上下文 对应的令牌。通常,此令牌是通过调用此类的 set 方法获得的。

返回类型:

set(conn_alias, conn_obj)[源代码]

将给定的别名设置为提供的连接对象。

参数:
conn_alias

设置连接的别名。

conn_obj

需要为此别名设置的连接对象。

注意

此方法从 当前上下文 复制存储,使用提供的 conn_obj 更新 conn_alias,并将更新后的存储设置在 新上下文 中,因此返回 contextvars.Token 以还原原始上下文存储。

返回类型:

令牌