开发者社区> 问答> 正文

pyodbc-传递参数

好的,我尝试了SO的所有可能情况,但没有一个起作用。

我在调用保存的查询时遇到问题,该查询需要传递4个参数(谈论访问数据库),并且我有一个简单的代码:

params = ()
sql_saldo = "{CALL KUP_BalansKupDosp(204701,0,#3/5/2020#,0)}"
saldo = cursor.execute(sql_saldo)
for row in saldo.fetchall():
    print(row)

这可行!

但是由于我需要这些参数是动态的,因此在尝试时:

params = ('204701','0,#3/5/2020#','0')
sql_saldo = "{CALL KUP_BalansKupDosp(?,?,?,?)}"
saldo = cursor.execute(sql_saldo, params)
for row in saldo.fetchall():
    print(row)

我收到一个错误条件表达式中的数据类型不匹配

这是原始参数定义。参数InKupID Long,InSekID Long,InDatum DateTime,InToler Currency = 1;`因此,我猜需要字符串,字符串,日期时间和整数。所以当我尝试:

today_row = date.today()
today = today_row.strftime("%d/%m/%Y")
params = (204701,0,today,0)
sql_saldo = "{CALL KUP_BalansKupDosp(?,?,?,?)}"
saldo = cursor.execute(sql_saldo, params)
for row in saldo.fetchall():
    print(row)

我也遇到同样的错误,甚至尝试了所有可能的组合,但我无法弄清。

PS。我的连接非常有效,因为除了这个查询之外,我还有10个查询。

有人有类似的问题吗?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 23:38:21 1042 0
1 条回答
写回答
取消 提交回答
  • 我设法解决这个问题:

    params = (204701, 0, today, 0)
    sql_saldo = "{CALL KUP_BalansKupDosp(%s,%s,%s,%s)}" % params
    saldo = cursor.execute(sql_saldo)
    for row in saldo.fetchall():
        print(row)
    

    回答来源:stackoverflow

    2020-03-24 23:38:30
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载