Как мне использовать / создать курсор в БД в моем потоке python? - PullRequest
0 голосов
/ 19 марта 2020

Я получаю сообщения о потоке, когда пытаюсь использовать или создать курсор базы данных в моей функции process_id. Каждый поток должен будет использовать базу данных для обработки данных для своего переданного идентификатора.

Я вообще не могу использовать курсор в thread / process_id (я получаю сообщения о потоке, и БД никогда не обновляется) ... Я кодировал это разными способами. Код работает, когда я не использую потоки.

У меня очень специфические c требования к написанию этого кода, медленный и стабильный - это хорошо. Я также вырезал много обработки ошибок / регистрации перед публикацией. Демон / Бесконечный l oop требуется.

Как мне раскрутить новый курсор в каждой теме?

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...