使用python

时间:2017-02-17 14:11:19

标签: python sql

我想使用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  

基于上面传递的参数,查询将填充,然后我可以执行完整的查询。

注意:实际上查询很大,我必须在很多地方更改它,所以正常的字符串操作令人困惑。所以其他任何选择。

谢谢:)

2 个答案:

答案 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)