如何在参数中使用pd.read_sql

时间:2019-08-09 15:24:11

标签: python sql sql-server pandas parameterized-query

在尝试使用pd.read_sql时,我无法使用SQL Server进行参数化查询。

如果我运行

[core]
    askpass =

那我得到了很好的结果:

query = 'SELECT * FROM positions'
pd.read_sql(query,engine)

但是如果我跑步

        position_id                  position_name
    0             0             ACCOUNTING MANAGER
    1             1                     HR MANAGER
    ...
    ...
    ...

然后我得到:

query = 'SELECT ?,? FROM position_names'
params = ['position_id','position_name']
pd.read_sql(query, engine, params=params)

我在做什么错?感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

我认为,您无需以param的形式读取列名,而是以columns的形式读取列名。

文档:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sql.html

  

参数:

     

列:列表,默认值:无

     

要从SQL表中选择的列名列表(仅在读取表时使用)。

答案 1 :(得分:0)

将查询更改为表名,并传递要提取的列列表:

    query = 'position_names'
    columns = ['position_id','position_name']
    pd.read_sql(query, engine, columns=columns)