Postgresql вставляет несколько столбцов некорректного литерала массива - PullRequest
0 голосов
/ 09 января 2019

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

DataError: неверно сформированный массив, литерал: "value1" LINE 1: ... public. "Texas" (лицензия, владелец бизнеса) ЦЕННОСТИ ('value1', '... ^ DETAIL: значение массива должно начинаться с "{" или информации о размерах.

Мой код:

import psycopg2
conn = psycopg2.connect(host="localhost",database="postgres", user="postgres", password="supershinypwdhere")
cur = conn.cursor()
cur.executemany("insert into public.\"Texas\"(licensenum,businessowner) VALUES (%s,%s)", [('value1','value2'),('value3','value4')])
conn.commit()
cur.close()
conn.close()

1 Ответ

0 голосов
/ 09 января 2019

Сообщение об ошибке означает, что столбцы licensenum и businessowner (или один из них) являются массивами. Вероятно, они должны быть простым текстом, тогда ваша программа будет работать хорошо. Однако, если вы действительно хотите, чтобы они были массивами, вы должны передавать списки, а не строки в качестве аргументов, например ::100100

cur.executemany(
    "insert into public.\"Texas\"(licensenum,businessowner) VALUES (%s,%s)", 
    [(['value1'],['value2']),(['value3'],['value4'])])
...