2017-08-06 1 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) 

はw/oエラーなしで動作します。誰も私の質問に私を助けることができますか?あなたは文字列の中にあなたの複数の変数をバインドするとき

+1

(%(variableB、variableC)、CON "TABLE_NAMEここで、B =%SおよびC!=%sからSELECT") 'DF = pd.read_sql_queryをお試しください' – 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

df= pd.read_sql_query("SELECT A from table_name where B = '%s' and C != '%s'" % (variableB, variableC), con) 
'%s'していました

以下のコードは私にpymysql.err.InternalErrorを与えました。

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

あなたのStackOverflowをありがとう:)

関連する問題