我对阅读psycopg2文档在处理事务方面有些困惑(除了使用
with
语句)。通过阅读文档,我发现默认情况下Psycopg会在执行第一条命令前开启一个事务:如果不调用commit(),任何数据操作的效果都将丢失。假设以上声明是正确的。dbconn = psycopg2.connect(...) cursor = dbconn.cursor()
cursor.execute("insert record into a")
cursor.execute("insert record into b")
cursor.execute("insert record into c") // This throw integrity error.
cursor.execute("commit") // this logs "WARNING: there is no transaction in progress"
a
和b
的数据操作可能会丢失。
但在我看来,PostgreSQL并没有发生这种情况。我肯定是在某些方面遗漏了什么,但现在我不确定是什么以及在哪里出了问题。
psycopg2
的事务,则commit
语句不会出现警告,即"WARNING:未启动任何事务"
。 - Noobie