如何使用熊猫read_sql_query函数将列作为参数传递

时间:2019-02-15 11:22:11

标签: python pandas mariadb

我正在编写一个SQL查询,我想在其中传递带有Pandas.read_sql_query中的参数的WHERE条件。 对于值,它工作正常,但是我遇到了变量问题。 我的解决方法是将字符串传递给pandas,但是我不希望看到我的代码。 我已经弄清楚,表的列名写错了。例如“ colname”而不是colname。

我将sql写为字符串:


command=("SELECT * FROM review r "
                     "WHERE 1=1  " 
                     "AND "+selected_var+"= "+selected_val
                     )

然后我把它传给了熊猫


self.reviews = pd.read_sql_query(command, con = self.cnxn)

但是我想在没有解决方法的情况下将其包括在内。


import pandas as pd
import mysql.connector

self.reviews = pd.read_sql_query("""
   SELECT *
   FROM review r
   WHERE 1=1
      AND  %(sel_var)s  = %(sel_val)s;
 """, con = self.cnxn, params = {'sel_var': selected_var,
                                 'sel_val': selected_val
  })

我希望查询显示结果时不会将所有内容都写为命令字符串。

1 个答案:

答案 0 :(得分:1)

字符串格式如何?

input_params = {'sel_var': selected_var,
                'sel_val': selected_val}

self.reviews = pd.read_sql_query(""" SELECT * FROM review r WHERE 1=1 
                                     AND {sel_var}={sel_val};""".format(**input_params), 
                                 con = self.cnxn)