如何在python中动态绑定SQL查询的多个参数?

时间:2017-08-06 08:19:54

标签: python sql pandas pymysql

所以,我有一张桌子(比如说table_name),它的列是:

|  A   |  B   |  C   |
------------------------
|  a1  |  b1  |  c1  |
|  a2  |  b2  |  c2  |
   ...

现在我必须使用以下查询读取列数据:

import pandas as pd
import pymysql as pycon

con = pycon.connect(host='localhost',user='root',password='', db='database')

#Error in here
df= pd.read_sql_query("SELECT A from table_name where B = %s and C != %s" %variableB %variableC, con)

但是我在read_sql_query(...)遇到错误可能是查询格式错误,因为动态绑定的单个参数工作正常 即

df= pd.read_sql_query("SELECT A from table_name where B = %s" %variableB, con)

没有错误。任何人都可以帮我查询吗?

2 个答案:

答案 0 :(得分:0)

将多个变量绑定到String时,语法应该是这样的

df= pd.read_sql_query("SELECT A from table_name where B = %s and C != %s" % (variableB, variableC), con)

答案 1 :(得分:0)

如果有人遇到同样的问题,请使用'%s'代替%s

查询正确的代码
df= pd.read_sql_query("SELECT A from table_name where B = '%s' and C != '%s'" % (variableB, variableC), con)

下面的代码给了我pymysql.err.InternalError。

df= pd.read_sql_query("SELECT A from table_name where B = %s and C != %s" % (variableB, variableC), con)

谢谢stackOverflow:)