2017-08-06 113 views
0

所以,我有一個表(比如table_name),並將其列:如何在python中動態綁定SQL查詢中的多個參數?

| 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) 

作品沒有錯誤。任何人都可以幫我查詢嗎?

+1

嘗試'DF = pd.read_sql_query( 「選擇從table_name的其中B =%S和C!=%s的」 %(variableB的variableC),CON) ' – Zero

回答

0

當您在多變量綁定到字符串,語法應該是這樣的

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

是的,我做到了,但仍然無法正常工作 – realpac

+0

我可以看到您的錯誤消息嗎? – Wonjin

+0

它給了我pymysql.err.InternalError現在工作。我所要做的只是在代碼中用''%s''替換'%s'。我已經發布了一個解決方案,如下所示。謝謝你的幫助 – realpac

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) 

謝謝:)計算器