簡體   English   中英

將數據從python列表復制到postgresql表中

[英]Copy data from python lists into postgresql tables

我有一個python列表cve_idpkg_namevuln_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:多維數組必須具有匹配維度的數組表達式

                                                         ^

如果有人可以指出可以做的事情,請在這里。

謝謝

如果您的數據采用以下形式:

[
    (val, val, val),
    (val, val, val),
    (val, val, val),
]

然后答案是cursor.executemany(sql,data):

psycopg2:通過一個查詢插入多行

如果您的數據不是這種形式,請使用zip()或列表推導形式將其放入此形式。

有巨大的性能影響。

  • 如果“自動提交”為“開”,則每個查詢將獲得一個COMMIT,這將非常緩慢。
  • 解決方案1:開始,然后執行many(),然后提交。
  • 解決方案2:請參見上面的鏈接,創建多值INSERT並將其作為單個查詢來執行。

嘗試替換cur.execute代碼,如下所示

cur.execute("""INSERT into vuln_data(cve_id, pkg_name, status) VALUES (%s,%s, %s);""", (cve_id, pkg_name, vuln_status))

確保列表中的項目按順序排列,否則將其轉換為元組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM