【发布时间】:2011-12-25 10:40:27
【问题描述】:
我习惯(被宠坏了?)python 的SQLite 接口来处理SQL 数据库。 python 的 SQLite API 中的一个不错的功能是“上下文管理器”,即 python 的 with 语句。我通常通过以下方式执行查询:
import as sqlite
with sqlite.connect(db_filename) as conn:
query = "INSERT OR IGNORE INTO shapes VALUES (?,?);"
results = conn.execute(query, ("ID1","triangle"))
使用上面的代码,如果我的查询修改了数据库并且我忘记运行conn.commit(),上下文管理器会在退出with 语句时自动为我运行它。它还可以很好地处理异常:如果在我提交任何内容之前发生异常,则数据库将回滚。
我现在正在使用MySQLdb 接口,它似乎不支持开箱即用的类似上下文管理器。我如何创建自己的?有一个相关的问题here,但它没有提供完整的解决方案。
【问题讨论】:
标签: python mysql with-statement contextmanager