簡體   English   中英

在python中將列表數據插入DB2

[英]Insert list data into DB2 in python

我在 python 中將元組列表插入 DB2 中的數據庫時遇到了這個問題

我之前的任務是創建一個包含所有數據的變量

但我無法將該數據插入數據倉庫

這是我在上一個任務中的代碼

def get_latest_records(rowid):
    MySQL_query = "SELECT * FROM sales_data WHERE rowid > %s"
    cursor.execute(MySQL_query, (rowid,))
    result = cursor.fetchall()
    return result
    
new_records = get_latest_records(last_row_id)
print("New rows on staging datawarehouse = ", len(new_records))
print(type(new_records))
print(new_records[0:2])

輸出顯示樣本數據

Sow 我有一個包含數據列表的變量我嘗試將該數據插入 DB2 Warehouse

我希望每個元組都作為行插入數據庫 (12290, 6715, 80213, 1)

記錄 12290 插入數據庫中 rowid 的編號

和 6715 插入到 product_id

80213 插入到 customer_id

1 插入數量

這是數據庫模式

數據庫模式

我試試這段代碼

def insert_records(records):
    Db2_Insert = "INSERT INTO SALES_DATA VALUES(?,?,?,?);"
    prepare = ibm_db.prepare(conn, Db2_Insert)
    ibm_db.execute(prepare, (records,))
     

insert_records(new_records)
print("New rows inserted into production datawarehouse = ", len(new_records))

不工作異常錯誤

謝謝你的幫助 。

避免構建嵌套的可迭代對象。 因為records是一個列表,所以不需要將它包裝在一個元組中。 您嘗試綁定的參數(records,)是列表對象的單項元組(該列表可能包含 4 個值)。

因此,只需在params參數中直接傳遞列表即可。 ibm_db.execute中要避免的是標量,而不是迭代:

def insert_records(records):
    Db2_Insert = "INSERT INTO SALES_DATA VALUES(?, ?, ?, ?);"
    prepare = ibm_db.prepare(conn, Db2_Insert)
    ibm_db.execute(prepare, records)

暫無
暫無

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

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