如何使用pandas pd.read_sql_query使用多个参数?

时间:2016-10-21 15:53:24

标签: python sql-server pandas parameter-passing

我试图在sql查询中传递三个变量。这些是区域,功能,newUser。我正在使用SQL驱动程序SQL Server Native Client 11.0。

这是我的代码。

query = "SELECT LicenseNo FROM License_Mgmt_Reporting.dbo.MATLAB_NNU_OPTIONS  WHERE Region = ?"

data_df = pd.read_sql_query((query),engine,params={region})

输出

     LicenseNo
 0           12
 1            5

相反,我想传入三个变量,这段代码不起作用。

query = "SELECT LicenseNo FROM License_Mgmt_Reporting.dbo.MATLAB_NNU_OPTIONS WHERE Region = ? and FeatureName = ? and NewUser =?"

nnu_data_df = pd.read_sql_query((query),engine,params={region, feature, newUser})

输出返回一个空数据框。

Empty DataFrame
Columns: [LicenseNo]
Index: []

2 个答案:

答案 0 :(得分:5)

在元组中尝试一个字符串,你也可以在查询中取出():

所以你可以做类似

的事情
query = "SELECT LicenseNo FROM License_Mgmt_Reporting.dbo.MATLAB_NNU_OPTIONS WHERE Region = ? and FeatureName = ? and NewUser =?"
region = 'US'
feature = 'tall'
newUser = 'john'
data_df = pd.read_sql_query(query, engine, params=(region, feature , newUser))

答案 1 :(得分:0)

我的操作员错误:(我使用了错误的变量,数据库没有返回任何结果,因为它不存在!