2016-07-11 4 views
0

私は、raw_inputを使用して生成するようにユーザーに依頼するpython変数でSQLコードを置き換えようとしています。Python変数をSQL文に渡すpsycopg2 pandas

以下は、mypythonvariableを手作業で入力した場合、つまり344をSQLコードに入力するとうまくいくコードですが、SQLをmypythonvariableに設定すると機能しません。

さらに、SQLクエリー全体がpandasデータフレームに変換され、さらに問題が発生します。

どのようにお手伝いをするかお手伝いします。

UPDATE:私はちょうどステートメントに%sコードを追加し、私は今のエラーメッセージ「を取得しています」:文字列中に変換すべての引数は をフォーマットません "に見えたことすべてに

conn = pg.connect(host = "localhost", 
         port = 1234, 
         dbname = "somename", 
         user = "user", 
         password = "pswd") 
mypythonvariable = raw_input("What is your variable number? ") 

sql = """ 
SELECT 
    somestuff 
FROM 
    sometable 
WHERE 
    something = %s 
""" 
df = pd.read_sql_query(sql, con=conn,params=mypythonvariable) 
+0

ないparamsをパンダ 'read_sql_query'によって処理されるかどうかはわかりますが、あなたは自分の文字列にパラメータを追加し、全体としてそれを渡すことができます。 'のsql =「」 "SELECT ... WHERE何か= %s "" "%(mypython変数)' –

答えて

0

感謝を。

解決策が見つかりました。パラメータをリストとして渡す必要があるようです。

conn = pg.connect(host = "localhost", 
        port = 1234, 
        dbname = "somename", 
        user = "user", 
        password = "pswd") 
mypythonvariable = raw_input("What is your variable number? ") 

sql = """ 
SELECT 
    somestuff 
FROM 
    sometable 
WHERE 
    something = %s 
""" 
df = pd.read_sql_query(sql, con=conn,params=[mypythonvariable]) 
関連する問題