Postgresql вставляет несколько столбцов некорректного литерала массива

1

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

Ошибка DataError: литерал массива: "value1" LINE 1:... public. "Texas" (licensenum, businessowner) VALUES ('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()
  • 0
    Вы можете опубликовать свою схему?
  • 0
    @Selcuk Боюсь, я не знаю, как это сделать. Достаточно ли утверждения CREATE?
Показать ещё 1 комментарий
Теги:
python-3.x
psycopg2
postgresql-10

1 ответ

1
Лучший ответ

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

cur.executemany(
    "insert into public.\"Texas\"(licensenum,businessowner) VALUES (%s,%s)", 
    [(['value1'],['value2']),(['value3'],['value4'])])
  • 0
    вернулся и проверил да, я установил столбец licensenum, чтобы быть массивом ... до

Ещё вопросы

Сообщество Overcoder
Наверх
Меню