我有一个python列表cve_id
,pkg_name
& vuln_status
。我想在postgresql表中导入这些列表中的数据
我尝试过:
from scanner import *
import psycopg2
try:
conn = psycopg2.connect(database="test", user="postgres",password="something", host="127.0.0.1", port="5432")
except:
print "Database un-successfull"
quit()
cur = conn.cursor()
cur.execute("INSERT into vuln_data(cve_id, pkg_name, status) VALUES (%s,%s, %s)", (cve_id, pkg_name, vuln_status))
conn.commit()
conn.close()
我收到错误说
psycopg2.DataError:多维数组必须具有匹配维度的数组表达式
^
如果有人能在这里指出可以做些什么,那就太爱了。
由于
答案 0 :(得分:1)
如果您的数据采用以下格式:
[
(val, val, val),
(val, val, val),
(val, val, val),
]
然后答案是cursor.executemany(sql,data):
psycopg2: insert multiple rows with one query
如果您的数据不是这种形式,请使用zip()或列表推导将其放在此表单中。
存在巨大的性能影响。
答案 1 :(得分:0)
尝试使用以下
替换cur.execute
代码
cur.execute("""INSERT into vuln_data(cve_id, pkg_name, status) VALUES (%s,%s, %s);""", (cve_id, pkg_name, vuln_status))
确保列表中的项目按顺序排列,否则将其转换为元组。