2011-05-20 67 views
1

我使用gevent-mysql(我也使用pymysql來達到同樣的效果)gevent。它確實選擇得很好,但無論我做什麼,我都無法運行插入。我沒有想法。插入似乎沒有發生

conn = geventmysql.connect(host='localhost', port=3306, user='root', db='content') 
cur = conn.cursor() 
cur.execute("insert into placement (placement_name, some_id) values ('static', 1)") 
cur.close() 
conn.close() 
+1

是否有錯誤消息,或者當您執行選擇時數據是否不顯示? – 2011-05-20 23:09:25

+0

另外,你用什麼引擎來放置表格? – 2011-05-20 23:10:57

+0

@克里斯,沒有錯誤。它只是不這樣做。 – Matt 2011-05-20 23:19:21

回答

3

如果您使用的是事務性存儲引擎(如InnoDB的),你應該檢查autocommit變量的值:http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_autocommit

如果0,您需要提交您的交易,要麼使用內置的commit()方法,要麼使用execute("COMMIT")調用。

+0

優勝者贏家。就是這樣。所以,這不是自動提交(別人提到可以設置一個標誌)謝謝你的幫助! – Matt 2011-05-20 23:23:21

2

如果geventmysql就像蟒蛇DB的API的其餘部分,你需要調用commit,以提交到數據庫的任何更改。除非gentmysql

+0

geventmysql或pymysql不是這種情況,但謝謝。 – Matt 2011-05-20 23:20:06

1

Python DB API中,一切都隱式地是一個事務。如果您在未提交的情況下關閉連接,則會回滾。這樣做:

conn.commit() 
cur.close() 
conn.close()