pyodbc - 传递参数
pyodbc - Passing parameters
好的,我尝试了 SO 的所有可能情况,none 成功了。
我在调用需要传递 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)
我收到一个错误 Data type mismatch in criteria expression
这是原始参数定义
PARAMETERS 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 个查询。
有人遇到过类似的问题吗?
我设法解决了这个问题:
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)
好的,我尝试了 SO 的所有可能情况,none 成功了。
我在调用需要传递 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)
我收到一个错误 Data type mismatch in criteria expression
这是原始参数定义
PARAMETERS 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 个查询。
有人遇到过类似的问题吗?
我设法解决了这个问题:
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)