我正在编写一个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
})
我希望查询显示结果时不会将所有内容都写为命令字符串。
答案 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)