在mysql-python中使用光标时,我通常会显式地调用“BEGIN;”、“COMMIT;”和“ROLLBACK;”,如下所示:
try:
cursor.execute("BEGIN;")
# some statements
cursor.execute("COMMIT;")
except:
cursor.execute("ROLLBACK;")
后来,我发现底层连接对象有相应的方法:
try:
cursor.connection.begin()
# some statements
cursor.connection.commit()
except:
cursor.connection.rollback()
检查 DB-API PEP,我发现它甚至没有提到连接对象的begin()方法,即使是对于扩展也是如此。
顺便说一句,Mysql-python在使用该方法时会抛出DeprecationWarning。例如,sqlite3.connection根本没有这种方法。
问题是为什么PEP中没有这样的方法?该语句是否可选,仅调用commit()是否足够?
conn.rollback()
和conn.commit()
而不是cursor.rollback()
和cursor.commit()
。我有所遗漏吗? - max