【发布时间】:2021-03-11 15:46:21
【问题描述】:
使用read_sql_query时是否可以向存储过程传递多个参数?
这很好用:
df = pd.read_sql_query("EXEC x_tntLog_list_bySerialNo @SerialNo='B201209-058'", cnxn)
但是当我尝试用多个参数循环它时:
params = ["B201209-058", "B201209-059", "B201209-060"]
for param in params
query = "EXEC x_tntLog_list_bySerialNo @SerialNo=?", param
df = pd.read_sql_query(query, cnxn)
results = results.append(df, ignore_index=True)
results
我得到这个错误:
Execution failed on sql '('EXEC x_tntLog_list_bySerialNo @SerialNo=?', ['B201209-060'])': The first argument to execute must be a string or unicode query.
我假设是因为 read_sql_query 正在为第一个参数寻找 cnxn 对象。
编辑
我意识到params 是一个字符串列表,但在我能够开始工作的此代码的先前版本中,这似乎不是问题:
params = ["B201209-058", "B201209-059", "B201209-060"]
for param in params:
cursor.execute("EXEC x_tntLog_list_bySerialNo @SerialNo=?", param)
for row in cursor.fetchall():
sheet.append([value for value in row])
wb.save('Output.xlsx')
有些人可能想知道为什么我不使用这个代码,因为它可以工作,原因是我想使用 pandas 而不是 excel 来操作数据
【问题讨论】:
标签: python sql pandas stored-procedures