2013-02-25 96 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

相關問題