Python:插入字符串时格式错误的数组文字

时间:2018-03-25 16:32:08

标签: python postgresql

我试图从文件中读取并使用psycopg2将数据插入python中的postgresql表。

这是我写的功能:

def insert(file, table, col, conn):
    sql = "INSERT INTO "+table+"("+col+") VALUES(%s)"
    cur = conn.cursor()
    with open(os.path.join(DEFAULTS_FOLDER, file)) as fp:
        line = fp.readline()
        while line:
            cur.execute(sql, (line.rstrip(),))
            line = fp.readline()
        conn.commit()
        cur.close()
    return

出于某种原因,我收到了错误:

cur.execute(sql, (line.rstrip(),)) psycopg2.DataError: malformed array literal: "hello" LINE 1: INSERT INTO greetings(gname) VALUES('hello')

我也尝试插入一个普通的字符串,但我仍然得到同样的错误。

1 个答案:

答案 0 :(得分:2)

错误消息表示表gname的列greetings是数组,而不是纯文本。如果是文本数组,则查询应如下所示:

INSERT INTO greetings(gname) VALUES('{hello}')

您应该更改代码的相关片段,例如:

cur.execute(sql, ("{{{}}}".format(line.rstrip()),))