2017-02-17 3 views
0

Я хочу выполнить один SQL-запрос из .sql-файла с помощью python. Запрос достаточно велик, поэтому я помещаю его в один файл (скажем, run_query.sql). Я могу прочитать запрос и выполнить его, но если я хочу изменить запрос, основанный на моих параметрах python, есть ли лучший способ я могу редактировать файл sql динамически? Например я хочу, чтобы отредактировать файл SQL, так что содержание в нем будет производить ниже запрос:Запуск SQL-запроса из .sql-файла с использованием python

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

Так что я хочу, функция питона будет принимать аргументы, как показано ниже:

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

основе приведенные выше аргументы передают запрос, и я могу выполнить полный запрос.

Примечание: на самом деле запрос является большим, и я должен изменить его во многих местах, поэтому обычные операции с строкой запутывают. Так что любой другой выбор.

Спасибо :)

ответ

0

Попробуйте

Определение: cursor.execute (я, запрос, арг = Нет)

query - string, que ry для выполнения на сервере

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'

И в питона,

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

Смежные вопросы