DB2 python插入字典列表

时间:2017-05-16 21:17:39

标签: python sql db2 prepared-statement

我有一个我想要插入DB2表的字典列表。我怎样才能做到这一点?我正在使用ibm_db DB2驱动程序。这是我的代码:

list_of_dictionaries = []
sql = "INSERT INTO schema.table VALUES (...)"
ibm_db.exec_immediate(conn, sql)

问题是表和字典有超过一百列/键,所以我不想在我的SQL查询中列出所有列名。

1 个答案:

答案 0 :(得分:2)

以下是如何使用ibm_db驱动程序将字典列表插入DB2表:

for i in list_of_dictionaries:

    columns = ', '.join(i.keys())
    placeholders = ', '.join(['?'] * len(i))

    insert_sql = "INSERT INTO schema.table ( " + columns + ") VALUES ( " + placeholders + ")"
    stmt_insert = ibm_db.prepare(conn, insert_sql)

    try:
        ibm_db.execute(stmt_insert, tuple(i.values()))
    except:
        print "Transaction couldn't be completed:" , ibm_db.stmt_errormsg()
    else:
        print "sucessfully inserted "

PS:当您正在进行批量插入时,可以使用函数ibm_db.execute_many(),但是它会降低错误处理的灵活性等。