2011-02-08 73 views
2

我有一個程序讀取文件並將數據插入數據庫。我正在爲python編寫該程序的測試工具。在生成測試數據之前,python線束連接到數據庫以獲取一些配置參數。然後等待10秒鐘以允許正在測試的程序處理文件並修改數據庫。如果我嘗試讀取數據庫中的值,那麼延遲後,它們不存在。如果我打開第二個終端並通過命令行檢查,他們不在那裏。只要我終止我的Python測試工具,數據就會被插入到數據庫中。這似乎是MySQLdb鎖定表不允許我插入數據。如何使MySQLdb的釋放鎖在桌子上Python MySQLdb不會釋放表鎖

TL;博士 我的工作流程是這樣的

connection = MySQLdb.connect(host="localhost") 
cursor = connection.cursor() 
cursor.execute(".....") 
cursor.close() 
connection.commit() 
connection.close() 
cursor = None 
connection = None 

sleep(10) 

重複上面來檢查我的其他程序應該已插入

回答

3

您需要的數據在cursor.close()之前做connection.commit()

請注意,MySQL實際上不支持遊標 - Python包裝器模擬它們。這會導致您的代碼無法以意想不到的方式工作,如本例中所示。