下面是我的代码:

import cx_Oracle

conn = cx_Oracle.connect(usr, pwd, url)
cursor = conn.cursor()
cursor.execute("UPDATE SO SET STATUS='PE' WHERE ID='100'")
conn.commit()

如果我删除conn.commit(),该表不被更新。但对于select语句,我不需要那个conn.commit()。我很好奇,为什么?

有帮助吗?

解决方案

DB-API 规范要求连接到数据库开始一个新的交易,在默认情况下。您必须commit确认所做的任何更改,或rollback丢弃它们。

  

请注意,如果数据库支持自动提交功能,这必须是最初关闭。

SELECT语句,因为他们从来没有对数据库做任何改动,不必有自己的变化承诺。

其他提示

提交用于告诉数据库保存在当前事务中的所有变化。

选择不改变任何数据,因此没有要保存且因此没有提交

请参阅维基百科获得交易

scroll top