简体   繁体   English

在python中执行准备好的语句IBM_DB时发生绑定错误

[英]Binding error on executing prepared statement IBM_DB in python

I am trying to execute a prepared statement to a db2 on IBM Cloud. 我正在尝试对IBM Cloud上的db2执行一条准备好的语句。 I only want to run the query if a data_array is populated which I have controlled that it is. 我只想在填充了我已控制的data_array情况下运行查询。 This is my code: 这是我的代码:

conn = ibm_db.connect(dsn, "", "")
ibm_db.autocommit(conn, ibm_db.SQL_AUTOCOMMIT_OFF)

ins_sql = "insert into MY_TABLE (ID, NAME) values (?, ?)"
ins_stm = ibm_db.prepare(conn, ins_sql)

if data_array:
    for data in data_array:
        ibm_db.bind_param(ins_stm, 1, data['ID'])
        ibm_db.bind_param(ins_stm, 2, data['NAME'])
        ibm_db.execute(ins_stm)

    ibm_db.commit(conn)

When I run it I get the following error in the ibm_db.execute(ins_stm) -line. 当我运行它时,在ibm_db.execute(ins_stm) -line中收到以下错误。

Exception: Binding Error 3: [IBM][CLI Driver] CLI0102E Invalid conversion. 异常:绑定错误3:[IBM] [CLI驱动程序] CLI0102E无效的转换。 SQLSTATE=07006 SQLCODE=-99999 SQLSTATE = 07006 SQLCODE = -99999

What am I doing wrong here? 我在这里做错了什么?

My guess is that it is a copy & paste error. 我的猜测是这是复制和粘贴错误。 You have data in the array, but use event to get the array part. 您在数组中有data ,但是使用event获取数组部分。 Change that to data['ID'] etc. 将其更改为data['ID']等。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM