2017-02-17 37 views
0

pythonを使用して.sqlファイルから1つのSQLクエリを実行します。クエリが十分に大きいので、私はそれを1つのファイルに入れます(run_query.sqlなど)。 私はクエリを読んで実行することができますが、私は私のpythonのパラメータに基づいてクエリを変更したい場合は、私は動的にSQLファイルを編集することができるより良い方法はありますか?Pythonを使用して.sqlファイルからSQLクエリを実行

def my_func(['SAM','JOY','JHON'], 'BLACKTOWN'): 
    #do stuffs so that the sql query 
    #in the file will modify 
    # then execute the query 

に基づく:私は、Pythonの関数は以下のように引数を取る欲しいものだから、

SELECT name, age FROM biodata WHERE name IN ('SAM','JOY','JHON') AND palce='BLACKTOWN' 

:たとえば は、私はそれの内容は以下のクエリを生成しますので、SQLファイルを編集したいですクエリを渡した上記の引数がいっぱいになると、完全なクエリを実行できます。

注:現実にはクエリが大きく、多くの場所でそれを変更しなければならないので、通常の文字列操作は混乱します。だから他の選択肢。

感謝:)あなたは何ができるか

答えて

0

この

定義してみてください。cursor.execute(自己、クエリ、引数を=なし)

query-string、queサーバ上で実行する場合

args - クエリで使用するオプションのシーケンスまたはマッピングパラメータ。

namelist =['SAM','JOY','JHON'] 
palce ='BLACKTOWN' 
query= 'SELECT name, age FROM biodata WHERE name IN (%s) AND palce=%s' 
names= ', '.join(names for unused in namelist) 
cursor.execute(query,names, palce) 
0

が保存されたクエリで使用するプレースホルダであり、あなたの変数に置き換えます。 たとえば、格納します:

SELECT name, age FROM biodata WHERE name IN ('name1','name2','name3') AND palce='place1'

とPythonで、

query.replace('name1', "SAM")

関連する問題