Как вызвать словарь в качестве параметра для хранимой процедуры - PullRequest
0 голосов
/ 28 декабря 2018

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

Данные Dict (ID - это внешний ключ), например: server1, ID1 server5, ID2

ID - это внешний ключ в таблице, которую я пытаюсь обновить, и должен быть параметром при вызове.хранимая процедура.Похоже, что когда я передаю словарь в качестве параметра, он тянет server1 вместо ID1 и вызывает ошибку ключа.

with open('DBstatus.csv') as dbcsvfile:
    dbstatus = csv.DictReader(dbcsvfile)
    for row in dbstatus:

#Create parameters for stored procedure
        guardpointparams = (row['FS Agent Registration Status'], row['FS Agent Version'], row['Guard Path'], serverdict[row['Host Name']], policydict[row['Policy Name']], 0)
        #call stored procedure
        updateguardpointstable = cursor.callproc('update_guardpoints', guardpointparams)

#i created the dictionary from a different script while updating the 
"servers" table where the DB is creating the returnvalue (ID) from the 
stored procedure see sample below:

serverdict[row['Host Name']] = returnvalue[3]

Трассировка: guardpointparams = (строка ['Статус регистрации агента FS'], строка ['Версия агента FS'], строка ['Путь защиты'], serverdict [строка ['Имя хоста']], policydict [row ['Policy Name']], 0) KeyError: 'server1'

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Похоже, ваш serverdict или ваш policydict не определены.По крайней мере, вы не даете определение в своем примере.Далее, трассировка говорит вам, что у одного из них нет ключа, который вы ищете.

0 голосов
/ 28 декабря 2018

row['Host Name'] представляется server1.В словаре serverdict нет ключа с именем server1

...