首页 > 解决方案 > Postgresql插入多列格式错误的数组文字

问题描述

我正在关注这里的教程,并尝试对其进行调整以传递多个列值。我已经尝试通过研究错误消息来解决这个问题,但是每次我尝试用 a 重写值时,{我都会得到一组不同的错误。我究竟做错了什么?

DataError:格式错误的数组文字:“value1”第 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()

标签: pythonpython-3.xpostgresqlpsycopg2postgresql-10

解决方案


错误消息意味着列licensenumbusinessowner(或其中之一)是数组。可能它们应该是简单的文本,那么您的程序就会运行良好。但是,如果您真的希望它们是数组,那么您应该传递列表,而不是字符串作为参数,例如:

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

推荐阅读