首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向ibm_db bind_param传递8次以上的通知?

如何向ibm_db bind_param传递8次以上的通知?
EN

Stack Overflow用户
提问于 2021-01-15 15:44:41
回答 1查看 354关注 0票数 0

我正在尝试从Upsert到db2 z/os。这是我的查询语句的简短副本。

代码语言:javascript
复制
-- sql
MERGE INTO SampleSchema.? as T
USING (VALUES (?,?,?,?,?)) S(A, B, C, D, E)
on T.A = S.A 
WHEN MATCHED THEN
UPDATE SET
   T.B = ?,
   T.C = ?,
   T.D = ?
   T.E = ?
WHEN NOT MATCHED THEN
   INSERT (T.A, T.B, T.C, T.D, T.E)
   VALUES (S.A, S.B, S.C, S.D, S.E)

我的python代码是,

代码语言:javascript
复制
import pandas as pd
'''
df looks like,
         A   B   C   D   E
1       a1   b1  c1  d1  e1
2       a2   b2  c2  d2  e2
.....
100000  a10000 ... ... ... ....
'''

import ibm_db

conn = ibm_db.connect("database", "username", "password")
stmt = ibm_db.prepare(conn, sql) # sql is from the above sql statement
table = "sampleTable"
for _, row in df.iterrows():
    ibm_db.bind_param(stmt, table, row["A"], row["B"], row["C"], row["D"], row["E"], row["B"], row["C"], row["D"], row["E"])
ibm_db.execute(stmt)

但是,我得到了这个错误

代码语言:javascript
复制
TypeError: function takes at most 8 arguments (11 given)

我怎样才能传递超过8个论点?还是可以传递字典类型?(它有许多重复的变量,我认为可以减少一些变量)

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-15 16:04:40

该错误建议检查预期的参数。让我们看一看param的函数定义

代码语言:javascript
复制
bool ibm_db.bind_param (IBM_DBStatement stmt, int parameter-number, string variable
 [, int parameter-type [, int data-type [, int precision [, int scale [, int size]]]]] )

parameter-number.标识的bind_param用于将值绑定到单个参数。如果有更多的参数,则需要多次调用bind_param。下面是链接文档中的这样一个示例:

代码语言:javascript
复制
sql_stmt = "insert into tabmany values(?,?)"
stmt = ibm_db.prepare(conn, sql_stmt)
id = 3
name = "Sam"
ibm_db.bind_param(stmt, 1, id)
ibm_db.bind_param(stmt, 2, name)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65739122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档