2011-04-13 48 views
3

我正面臨一個問題,我試圖從python腳本將數據添加到mysql數據庫與InnonDB引擎,它可以很好地與mysql數據庫的myisam引擎一起工作。但是myisam引擎的問題是它不支持外鍵,所以我將不得不在每個要插入/刪除數據庫記錄的地方添加額外的代碼。在使用innondb引擎從mysql數據庫中插入python腳本的問題

有誰知道爲什麼InnonDB不能用python腳本和可能的解決方案解決這個問題?

+1

您面臨的問題是什麼?你有錯誤信息嗎?你可以把它們發佈給我們嗎? – brandizzi 2011-04-13 19:02:47

+0

你是什麼意思,「InnoDB不適用於Python腳本」?我一直使用它很好用。 – 2011-04-13 19:31:04

+0

@Daniel在非自動提交模式下,如果在提交之前斷開連接,MySQL會將更新內容拋出窗口。聽起來對我來說。 – Johan 2011-04-14 07:32:00

回答

6

InnoDB是事務性的。您需要在插入/刪除/更新後調用connection.commit()。

編輯:你可以調用connection.autocommit(True)打開自動提交。

+0

否這取決於您的連接參數。您**可以**將其設置爲不自動提交,但自動提交是默認設置。 – Johan 2011-04-13 20:45:07

+2

閱讀上面的答案。 Python禁用自動提交。 – 2011-04-14 06:58:44

+1

+1顯示如何啓用自動提交。 – Johan 2011-04-14 07:33:38

4

Python的DB API默認

從谷歌粘貼(第一頁,第二個結果)

的MySQL :: MySQL 5.0中參考手冊:: 13.2.8 InnoDB的禁用自動提交... 默認情況下,MySQL的啓動與自動提交每個新的連接會話... dev.mysql.com/.../innodb-transaction-model.html

然而

顯然的Python在非自動提交模式開始的MySQL,請參見:
http://www.kitebird.com/articles/pydbapi.html

從文章:

連接對象commit()方法犯任何未完成的更改當前的事務使它們在數據庫中永久存在。在DB-API中,連接以自動提交模式禁用開頭,所以您必須在斷開連接之前調用commit(),否則更改可能會丟失。

Bummer,不知道如何重寫,我不想讓你誤入歧途。 我會建議打開一個新的問題:

如何在MySQL python DB-API中啓用自動提交模式?

祝你好運。

+0

>如何在MySQL python DB-API中啓用自動提交模式? conn.autocommit(True)從這裏開始:http://stackoverflow.com/q/12059424/719812 – 2017-02-04 01:37:57

相關問題