SQLAlchemy 核心连接上下文管理器

Posted

技术标签:

【中文标题】SQLAlchemy 核心连接上下文管理器【英文标题】:SQLAlchemy Core Connection Context Manager 【发布时间】:2013-07-04 01:43:59 【问题描述】:

我可以为 SQLAlchemy Core 连接使用上下文管理器吗?换句话说,是

conn = engine.connect()
conn.execute('SELECT * FROM FOO')
conn.close()

一样
with engine.connect() as conn:
    conn.execute('SELECT * FROM FOO')

我不需要在上下文管理器退出时对提交、回滚等进行任何检查。

【问题讨论】:

【参考方案1】:

您可以将连接用作上下文管理器。

请参阅连接的__enter____exit__ 方法以了解其实现方式。 __enter__ 只返回 self__exit__ 调用关闭。

或者你可以试试:

from sqlalchemy import create_engine
engine = create_engine("sqlite:///:memory:")
with engine.connect() as conn:
    print(conn.closed)
print(conn.closed)

输出:

错误的 真的

【讨论】:

以上是关于SQLAlchemy 核心连接上下文管理器的主要内容,如果未能解决你的问题,请参考以下文章

使用flask-sqlalchemy连接mysql遇到的问题

flask mysql sqlalchemy教程

Python核心技术与实战——二一|巧用上下文管理器和with语句精简代码

flask-sqlalchemy 外连接的 Flask-marshmallow 转储返回空

Flask 学习-19.配置管理flask_sqlalchemy 和 flask_migrate

数据库连接池,本地线程,上下文管理