我在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])
output showing sample data
假设我有一个包含数据列表的变量,我尝试将该数据插入DB2 Warehouse
我希望将每个元组作为行(12290、6715、80213、1)插入数据库
记录12290插入到数据库中的rowid中的数字
和6715插入到产品ID中
80213插入到客户标识
1个插入到数量
这是数据库模式
database schema
我试了这个代码
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))
无法工作exception error
谢谢你的帮助。
1条答案
按热度按时间bcs8qyzn1#
避免构建嵌套的可迭代对象。因为
records
是一个列表,所以没有必要将其 Package 在元组中。您试图绑定的参数(records,)
是列表对象的一个元组(其中该列表可能携带4个值)。因此,只需直接在
params
参数中传递列表即可。在ibm_db.execute
中,您希望避免的是标量,而不是可迭代对象: