Ошибка cx_Oracle при доступе к переменной Json с использованием Python - PullRequest
0 голосов
/ 20 февраля 2019

Я новичок в Python и испытываю трудности с получением переменной Json.

payload = ""
headers = {
    'Authorization': authorization,
    'cache-control': "no-cache",
    'Postman-Token': "65a104eb-1210-4eeb-880b-ceed78b21364"
    }

response = requests.request("GET", url, data=payload, headers=headers)

x = json.loads(response.text, object_hook=lambda d: namedtuple('X',    
    d.keys())(*d.values()))

for a in x:
    print(a.numeroComlink)

connection = cx_Oracle.connect('xxxxx/xxxxx@XE')
cursor = connection.cursor()
sql_insert = "insert into usu_obt_cot (usu_numclk) values (:usu_numclk)"
cursor.execute(sql_insert, {"usu_numclk": int(x.numeroComlink)})

connection.commit()
cursor.close()

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

Error Received

С тех пор я благодарен за внимание.

1 Ответ

0 голосов
/ 20 февраля 2019

Cursor.execute будет выполнять только один оператор вставки, и x содержит много значений.Если вы хотите, чтобы он вставил все значения в list "x", вы можете сделать несколько операторов вставки в цикле (что просто, но, вероятно, не будет работать очень хорошо) ...

...
sql_insert = "insert into usu_obt_cot (usu_numclk) values (:usu_numclk)"
for a in x:
    cursor.execute(sql_insert, {"usu_numclk": int(a.numeroComlink)})
...

Или вы можете следовать примерам в этом похожем вопросе и попытаться выполнить пакетную вставку с Cursor.executeMany.

...