use*_*708 5 python parameters pyodbc
我正在学习 python,并且尝试将参数作为 WHERE 子句的一部分传递。我正在使用 pandas 和 pyodbc。这是我到目前为止所尝试过的。我首先从 pandas 数据框中获取 c 列的数据,并将其转换为名为 df_col 的列表,该列表包含大约 100 个数值
df_col=df['data_for_colc'].tolist()
Run Code Online (Sandbox Code Playgroud)
然后,我执行 SQL 语句:
execu = mycursor.execute(
"""
Select
columnA
,columnb
,columnc
where
columnc in (?)
""",df_col)
rows = mycursor.fetchall()
print(rows)
Run Code Online (Sandbox Code Playgroud)
我能够连接 SQL Server 并下载数据,但无法传递参数。我只需要能够根据我使用 100 个值创建的列表下载这 100 行,但出现错误:('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]不正确',' 附近的语法。(102) (SQLExecDirectW)")
任何帮助,将不胜感激。谢谢
语法错误是因为您FROM在查询中遗漏了该子句。
?一旦解决了这个问题,列表中的元素数量就需要IN()与 中的元素数量一样多df_col。
placeholders = ", ".join(["?"] * len(df_col))
sql = """
SELECT columnA, columnB, columnC
FROM yourTable
WHERE columnc IN (""" + placeholders + ")"
execu = mycursor.execute(sql, df_col)
rows = mycursor.fetchall()
print(rows)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8884 次 |
| 最近记录: |