2013-02-25 82 views
1

我曾经能够使用简单的执行语句来运行和执行python。这将相应地将值1,2插入到a,b中。但是从上周开始,我没有错,但是我的数据库中没有发生任何事。没有旗帜 - 没有东西... 1,2没有插入或替换到我的表中。任何人都可以告诉我什么是python pyodbc connection.commit()的点?

connect.execute("REPLACE INTO TABLE(A,B) VALUES(1,2)") 

我终于找到了我需要提交()的文章,如果我失去了与服务器的连接。所以,我有添加

connect.execute("REPLACE INTO TABLE(A,B) VALUES(1,2)") 
connect.commit() 

现在的作品,但我只是想了解一点点,为什么我需要这个,如果我知道我我的连接没有迷路?

  • python新手 - 谢谢。
+0

Ref。 [数据库交易](http://en.wikipedia.org/wiki/Database_transaction)。 – 2013-02-25 22:20:26

回答

2

未提交将所有查询放入一个事务中,当查询彼此相关时,这些事务更安全(并且性能可能更好)。如果两个查询之间的权力独立无关 - 例如使用两个更新查询将资金从一个账户转移到另一个账户,那该怎么办?

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

+0

很酷,明白了,谢谢你! – JPC 2013-02-25 22:26:40

2

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

关系数据库通常以交易方式工作:任何时候当您更改某项内容时,交易即开始并且不会结束,直到您或者commitrollback。这使您可以同时进行几个数据库中出现的更改(当发布commit时)。如果出现问题(通过rollback),它还允许您作为一个单元中止整个交易,而不必显式撤销您所做的每项更改。

您可以通过开启自动提交功能使该功能变为透明,在这种情况下,每个语句后都会发出commit,但这通常被认为是不好的做法。

+0

然后是自动提交模式.. – 2013-02-25 22:22:12

相关问题