我有一個主要的Python腳本連接到MySQL數據庫,並從中剔除少量記錄。基於返回的結果,它將啓動儘可能多的線程(類實例)和抓取許多記錄。每個線程應該返回到數據庫並通過將一個狀態標誌設置爲不同的狀態(「進程已啓動」)來更新另一個表。如何使用Python多線程處理MySQL連接(s)
要做到這一點我想:
1)通過了數據庫連接的所有主題 2)打開從每個線程
一個新的數據庫連接,但他們都不是工作。
我可以運行我的更新沒有任何問題在這兩種情況下通過使用try/except,但MySQL表尚未更新,並且沒有生成錯誤。我在這兩種情況下都使用了commit。
我的問題是如何在這種情況下處理MySQL連接?
更新基於第一幾點意見:
MAIN SCRIPT
-----------
#Connecting to DB
db = MySQLdb.connect(host = db_host,
db = db_db,
port = db_port,
user = db_user,
passwd = db_password,
charset='utf8')
# Initiating database cursor
cur = db.cursor()
# Fetching records for which I need to initiate a class instance
cur.execute('SELECT ...')
for row in cur.fetchall() :
# Initiating new instance, appending it to a list and
# starting all of them
CLASS WHICH IS INSTANTIATED
---------------------------
# Connecting to DB again. I also tried to pass connection
# which has been opened in the main script but it did not
# work either.
db = MySQLdb.connect(host = db_host,
db = db_db,
port = db_port,
user = db_user,
passwd = db_password,
charset='utf8')
# Initiating database cursor
cur_class = db.cursor()
cur.execute('UPDATE ...')
db.commit()
很難說,不知道如何連接到你的數據庫,你如何實現更新任何東西。 – Ashalynd
我不完全理解你的問題。是最簡單的情況下工作,像單線程python連接到MySQL和更新表? – qqibrow
@Ashalynd感謝您花時間!抱歉,我是AFK。我用我的主代碼和類代碼中的代碼snipet更新了我的問題。這是我如何啓動實例並打開數據庫連接的方式。我試圖捕捉錯誤,當打開連接和執行查詢從嘗試/除了沒有運氣的情況下。 – g0m3z