使用 psycopg2 从数据帧插入到 table:数组值必须以“{”或维度信息开头

Inserting from dataframe to table using psycopg2: array value must start with "{" or dimension information

我想使用 psycopg2 将数据帧中的数据插入 table,但是当我尝试插入时,它显示一条消息,指出数组必须以“{”或维度信息开头。 这是我的代码:

for f in df.iterrows():
    cur.execute("INSERT INTO NumCasos VALUES (%s, %s)",(df.iloc[m, 0],df.iloc[m, 1].item()))

这是显示的错误:

InvalidTextRepresentation: malformed array literal: "UlPkw" 
LINE 1: INSERT INTO NumCasos VALUES ('UlPkw', 303)
DETAIL:  Array value must start with "{" or dimension information.

我不确定如何解决这个问题,如果有人知道,如果您能指导我正确的方向,那就太好了。

您的 table 的第一列必须是数组类型。但是你试图插入一个字符串,而不是一个字符串数组。

如何修复它取决于您要做什么。您可以更改 table 中该列的类型,使其只包含简单的字符串。您可以更改您的程序,使 df.iloc[m, 0] 包含一个 python 数组,它会在绑定时自动转换为 PostgreSQL 数组。您可以将它包装成一个单元素 python 数组:

cur.execute("INSERT INTO NumCasos VALUES (%s, %s)",([df.iloc[m, 0]],df.iloc[m, 1].item()))

或者可以更改存储在 df.iloc[m, 0] 中的文本,使其看起来像 PostgreSQL 的有效数组文字的想法,方法是(在这种情况下)只需添加大括号作为字符串的第一个和最后一个字符。