【发布时间】:2009-05-24 11:17:24
【问题描述】:
刚刚因为差异而脱发,我想知道在 Python 2.5 中真正有什么不同。
我有两个代码块(dbao.getConnection() 返回一个 MySQLdb 连接)。
conn = dbao.getConnection()
with conn:
# Do stuff
和
with dbao.getConnection() as conn:
# Do stuff
我认为这些会产生相同的效果,但显然不是因为后一个版本的 conn 对象是 Cursor。光标从何而来,是否有办法以某种方式将变量初始化和 with 语句结合起来?
【问题讨论】:
-
第二个版本确实初始化了一个变量 conn。你有什么实际问题?有什么不同?你得到了什么错误?你能包含一些输出来显示问题吗?
-
对不起。认为从描述中应该很清楚。 dbao.getConnection() 返回 MySQLdb 连接,因此 conn = dbao.getConnection() 导致 conn 成为 Connection 对象,而“with dbao.getConnection() as conn”导致 conn 成为 Cursor 对象。错误消息是在后一种情况下,conn 没有回滚方法,因为它是 Cursor,所以它不应该有。