LINUX.ORG.RU

SQL внутри python multiprocessing. КАК?

 , ,


0

2

Такая проблема.
Вот схематичный код:


def processInput(users):
    sql_1 = "SELECT * FROM table1"
    cursor.execute(sql_1)
    res_1 = cursor.fetchall()
    print(res_1)

    sql_2 = "SELECT * FROM table2"
    cursor.execute(sql_2)
    res_2 = cursor.fetchall()
    print(res_2)

pool = Pool(processes=8)
for _ in tqdm.tqdm(pool.imap_unordered(processInput, users), total=len(users)):
    pass




Так вот, res_2 получается идентичным res_1.
Что за нах и как исправить?

★★★★★

Последнее исправление: Qwentor (всего исправлений: 1)

и что в них содержится? blabla2? Тогда это res_1 идентичен res_2. Может, нужно два курсора?

bvn13 ★★★★★
()
Ответ на: комментарий от bvn13

база одна. запросы к разным таблицам, поэтому cursor один
внутри обычного for все работает, но нужно параллельно
blabla поправил на более внятное

Qwentor ★★★★★
() автор топика
Последнее исправление: Qwentor (всего исправлений: 2)
Ответ на: комментарий от anonymous

скройся в тумане
ожидал помощи, а тут буэ какое-то

ожидаю сообщения по делу
надеюсь

Qwentor ★★★★★
() автор топика

Скорее всего, у тебя соединение с бд в разных процессах одно и то же, попробуй в processInput устанавливать соединение, а затем выполнять запрос.

hatefu1_dead
()

А откуда ты знаешь что смотришь на res2? Там просто принт без инфы о том что именно он принтит

redixin ★★★★
()

Питона не знаю, но вполне твоя ормка могла закешировать твой fetchall(), попробуй из другого контекста вызвать.

nikolnik ★★★
()

Короче, тупо создаю соединение еще раз уже внутри processInput и все ок

Qwentor ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.