我想使用python从.sql文件执行一个SQL查询。查询足够大,这就是我把它放在一个文件中的原因(比如run_query.sql)。 我能够读取查询并执行它,但如果我想根据我的python参数更改查询,有没有更好的方法我可以动态编辑sql文件? 例如,我想编辑sql文件,因此其中的内容将产生以下查询:
SELECT name, age FROM biodata WHERE name IN ('SAM','JOY','JHON') AND palce='BLACKTOWN'
所以我想要一个python函数将采用如下的参数:
def my_func(['SAM','JOY','JHON'], 'BLACKTOWN'):
#do stuffs so that the sql query
#in the file will modify
# then execute the query
基于上面传递的参数,查询将填充,然后我可以执行完整的查询。
注意:实际上查询很大,我必须在很多地方更改它,所以正常的字符串操作令人困惑。所以其他任何选择。
谢谢:)
答案 0 :(得分:0)
您可以做的是在保存的查询中使用占位符并将其替换为您的变量。 例如,您将存储:
SELECT name, age FROM biodata WHERE name IN ('name1','name2','name3') AND palce='place1'
在python中,
query.replace('name1', "SAM")
答案 1 :(得分:0)
试试这个
定义:cursor.execute(self,query,args = None)
query - string,query to server on server
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)