[英]Can anyone tell me what' s the point of connection.commit() in python pyodbc ?
我以前只能使用execute语句运行和执行python。 这将相应地将值1,2插入a,b中。 但是从上周开始,我没有收到任何错误,但我的数据库中没有任何反应。 没有标志 - 没有... 1,2没有插入或替换到我的表。
connect.execute("REPLACE INTO TABLE(A,B) VALUES(1,2)")
如果我丢失了与服务器的连接,我终于找到了需要commit()的文章。 所以我补充一下
connect.execute("REPLACE INTO TABLE(A,B) VALUES(1,2)")
connect.commit()
现在它可以工作,但我只是想了解一点,为什么我需要这个,如果我知道我的连接没有丢失?
不提交将所有查询放入一个事务中,当查询彼此相关时,这个事务更安全(并且可能更好地表现性能)。 如果权力在两个独立的查询之间进行,例如使用两个更新查询将资金从一个帐户转移到另一个帐户,该怎么办?
如果不需要,可以将autocommit
设置为true,但这样做的原因并不多。
这不是Python或ODBC问题,而是关系数据库问题。
关系数据库通常在事务方面起作用:每当您更改某些内容时,事务就会启动,并且在您commit
或rollback
之前不会结束。 这允许您同时进行多次连续出现的数据更改(发出commit
时)。 如果出现问题(通过rollback
),它还允许您作为一个单元中止整个事务,而不是必须显式撤消您所做的每个更改。
您可以通过启用自动提交来使此功能透明,在这种情况下,将在每个语句之后发出commit
,但这通常被认为是一种不好的做法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.