我试图从文件中读取并使用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')
我也尝试插入一个普通的字符串,但我仍然得到同样的错误。
答案 0 :(得分:2)
错误消息表示表gname
的列greetings
是数组,而不是纯文本。如果是文本数组,则查询应如下所示:
INSERT INTO greetings(gname) VALUES('{hello}')
您应该更改代码的相关片段,例如:
cur.execute(sql, ("{{{}}}".format(line.rstrip()),))