您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python数据库API中是否为连接对象指定了__enter__和__exit__行为?

在Python数据库API中是否为连接对象指定了__enter__和__exit__行为?

在将上下文管理器添加到Python语言之前,Python DBAPI编写良好。

这样,不同的数据库库就如何实现上下文管理器支持(如果他们完全实现了)做出了 自己的 决定。

通常 ,将数据库用作上下文管理器会将您绑定到事务。根据是否存在异常__enter__,事务从开始于,然后在提交或中止__exit__。这样,您应该在单独连接后将MysqL连接用作上下文管理器:

connection = util.get_db_connection()

with connection as cursor:
    cursor.execute(...)

# connection commit is issued if no exceptions were raised.

sqlite3上下文管理器实现是微妙的不同; 它还管理事务,但不从__enter__方法中返回游标:

con = sqlite3.connect(":memory:")
with con:
    cursor = con.cursor()
    # or use the connection directly
    con.execute(...)

从技术上讲,它只是self在上返回__enter__

python 2022/1/1 18:39:39 有257人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶