1. 程式人生 > >python 使用MySQLdb 和 pymysql的時候手動提交事務的解決辦法

python 使用MySQLdb 和 pymysql的時候手動提交事務的解決辦法

最近在使用Python寫一個高併發的接受http請求併入庫的模組。
再使用python 操作mysql的時候,使用了其pymysql模組,但是在進行插入操作的時候,必須使用受到提交事務,資料庫中才能有資料。也就是必須使用commit()
但是mysql的自動開啟事務且執行的。
mysql> show variables like ‘autocommit’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| autocommit | ON |
+—————+——-+

所以我在使用C API 進行sql 插入操作的時候,資料庫也是有資料的。

但是在使用Python api 進行操作的時候必須手動commit()。而且耗時0.5s,難以忍受。而且Python api 操作mysql資料庫的時候,單單一個insert 插入到一張不到10w的表中,也要耗時0.5s。so long。。。

所以查找了一下資料,看到可以在初始化連線池的時候,對每一個連線進行設定,即
conn = mdb.connect(host=’127.0.0.1’, port=3306, user=’root’, passwd=’root’, db=’test’, charset=’utf8’)
conn.autocommit(1) # conn.autocommit(True)
cursor = conn.cursor()

對每一個連線進行設定其autocommit的值。解決之,節省了0.5s的時間。
後續繼續優化,看看為何插入如此耗時。。。有進展繼續更新。