3

我曾经能够使用简单的执行语句来运行和执行 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()

现在它可以工作了,但我只是想稍微了解一下,如果我知道我的连接没有丢失,我为什么需要这个?

  • python新手-谢谢。
4

2 回答 2

3

这不是 Python 或 ODBC 问题,而是关系数据库问题。

关系数据库通常以事务的形式工作:每当您更改某些内容时,事务就会启动,并且直到您使用commitrollback. 这允许您进行多个同时出现在数据库中的串行更改(当commit发布时)。如果出现问题(通过 ),它还允许您将整个事务作为一个单元中止rollback,而不必显式撤消所做的每个更改。

您可以通过打开自动提交来使此功能透明,在这种情况下,commit将在每个语句之后发出 a,但这通常被认为是一种不好的做法。

于 2013-02-25T22:21:38.307 回答
2

当查询彼此相关时,不提交会将您的所有查询放入一个更安全(并且可能在性能方面更好)的事务中。如果权力在两个独立没有意义的查询之间进行 - 例如使用两个更新查询将资金从一个账户转移到另一个账户。

autocommit如果您不想要它,您可以设置为 true,但没有太多理由这样做。

于 2013-02-25T22:20:34.560 回答