我一直在尝试测试各种方法来运行我的代码.首先,我有这个清单:
member_list = [111,222,333,444,555,...]
我试图将它传递给这个查询:
query = pd.read_sql_query(
"""
select member id
,yearmonth
from queried_table
where yearmonth between ? and ?
and member_id in ?
""", db2conn, params = [201601, 201603, member_list])
Run Code Online (Sandbox Code Playgroud)
但是,我收到的错误是:
'参数类型无效.param-index = 2 param-type = list','HY105'
所以我环顾四周并尝试使用格式化的字符串:
query = pd.read_sql_query(
"""
select member id
,yearmonth
from queried_table
where yearmonth between ? and ?
and member_id in (%s)
""" % ','.join(['?']*len(member_list), db2conn, params = [201601, 201603, tuple(member_list)])
Run Code Online (Sandbox Code Playgroud)
现在,我收到错误:
'SQL包含18622参数标记,但提供了3个参数','HY000'
因为它希望填充?格式化字符串中的所有占位符.
所以,最终,有没有办法以某种方式评估列表并传递每个单独的元素绑定到?或是否有另一种方法,我可以使用它来使其工作?
顺便说一下,我pyodbc用作连接器. …