Python значения списка переопределяются - PullRequest
0 голосов
/ 07 мая 2020

У меня есть сценарий, в котором утилита python запрашивает зависимости идентификатора дела для идентификатора дела из базы данных. Предположим, ID дела 123 зависит от ID дела 234 и 456.

Есть два списка. r2 будет содержать пустое значение или одно или несколько значений (зависимые идентификаторы case). В свою очередь, каждый идентификатор случая будет иметь версии, такие как v1, v2, et c, и они будут добавлены в список r3. Патч 123 будет развернут только в том случае, если развернуты все версии идентификатора дела.

r2 = [187045, 187046] 
r3 = []

Я беру эти значения версии из таблицы журнала БД. Все работает нормально, за исключением того, что небольшая ошибка вызывает проблему. r3 [] переполняется новыми значениями.

for item in r2:
        cursor.execute('select distinct Version_Num from dbo.test where CMS_ID = ? and deployment_status = 0', item)
        row3 = cursor.fetchall()  #fetches a tuple
        thi_tuple = [c_tup[0] for c_tup in row3]  #converts tuple to a list
        r3 = list(map(int, thi_tuple)) #converts list to list of ints
        print(r3) 

вывод будет следующим:

[2, 3] #versions of 187045
[1] #version of 187046

И окончательный вывод r3 будет просто [1]. Как получить r3 = [2, 3 ,1]?

Я знаю, что for l oop перекрывает список с итерацией.

С уважением

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Если у вас

for item in r2:
    cursor.execute('select distinct Version_Num from dbo.test where CMS_ID = ? and deployment_status = 0', item)
    row3 = cursor.fetchall()  #fetches a tuple
    thi_tuple = [c_tup[0] for c_tup in row3]  #converts tuple to a list
    r3 = list(map(int, thi_tuple)) #converts list to list of ints
    print(r3)

замените на

for item in r2:
    cursor.execute('select distinct Version_Num from dbo.test where CMS_ID = ? and deployment_status = 0', item)
    row3 = cursor.fetchall()  #fetches a tuple
    thi_tuple = [c_tup[0] for c_tup in row3]  #converts tuple to a list
    r3 += list(map(int, thi_tuple)) # append new values
    print(r3) 
0 голосов
/ 07 мая 2020

Попробуйте это. Думаю, это решит вашу проблему. Insted of

r3 = list(map(int, thi_tuple)) 

Use

r3 = r3 + list(map(int, thi_tuple)) 

You l oop теперь будет выглядеть так:

for item in r2:
    cursor.execute('select distinct Version_Num from dbo.test where CMS_ID = ? and deployment_status = 0', item)
    row3 = cursor.fetchall()  # fetches a tuple
    thi_tuple = [c_tup[0] for c_tup in row3]  # converts tuple to a list
    r3 = r3 + list(map(int, thi_tuple))  # converts list to list of ints
    print(r3) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...