Wie verwende ich / erstellen db Cursor in meinem Python-Thread?

stimmen
0

Ich erhalte threading Fehler, wenn ich versuche, einen db Cursor in meiner process_id Funktion zu verwenden oder zu erstellen. Jeder Thread muss die Datenbank-Prozessdaten für ihre gebenen ID verwenden.

Ich kann nicht einen Cursor in dem Thread / PROCESS_ID überhaupt nutzen (ich threading Fehler und die nie Updates DB) ... Ich habe es codiert viele verschiedene Arten. Der Code funktioniert, wenn ich nicht über Gewinde verwenden.

Ich habe sehr spezifische Anforderungen an, wie dieser Code geschrieben werden soll, langsam und stabil ist in Ordnung. Ich habe ich auch eine Menge Fehlerbehandlung / Protokollierung vor der Veröffentlichung aus. Daemon / Endlosschleife erforderlich.

Wie Spin ich in jedem Thread einen neuen Cursor nach oben?

import threading
import time
from datetime import datetime
import os
import jaydebeapi, sys

#Enter the values for you database connection
database = REMOVED          
hostname = REMOVED
port = REMOVED               
uid = REMOVED       
pwd = REMOVED 

connection_string='jdbc:db2://'+hostname+':'+port+'/'+database

if (sys.version_info >= (3,0)):
    conn = jaydebeapi.connect(com.ibm.db2.jcc.DB2Driver, connection_string, [uid, pwd], jars=REMOVED)
else:
    conn = jaydebeapi.connect(com.ibm.db2.jcc.DB2Driver, [connection_string, uid, pwd])

# Thread Pool Variables
max_threads = 5
used_threads = 0

# define main cursor
cus=conn.cursor()

def process_id(id):
    #create a cursor for a thread
    cus_id=conn.cursor()
    cus_id.execute(SOME QUERY;)
    cus_id.close()
    global used_threads
    used_threads = used_threads - 1         
    return 0

def daemon():
    global num_threads, used_threads
    print(Daemon running...)
    while True:
        #ids to process are loaded into a list...
        for id in ids_to_process:
            if used_threads < max_threads:
                t = threading.Thread(target=process_id, args=(int(id),))
                t.start()
                used_threads += 1
    return 0

daemon()
Veröffentlicht am 19/03/2020 um 21:55
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more