python替换字符串中的占位符值

时间:2016-07-08 18:26:30

标签: python

我在python中有以下要求,我需要在运行时传递日期和id。

query_str="select * from test_table where data_date = '${data_date}' and id = ${id}"

Where data_date is string column and id is big int column. 

如果我将data_date作为2015-01-01传递并且id为1,则应该替换以下参数。

Output : select * from test_table where data_date = '2015-01-01' and id = 1

1 个答案:

答案 0 :(得分:3)

您实际询问的内容称为query parameterization,必须依靠数据库驱动程序提供的内容完成。这样,您就可以让驱动程序处理正确的转义和python到数据库类型的转换。

根据驱动程序的不同,占位符样式可能会有所不同,但%s是最常见的:

query_str = """
    select * 
    from test_table 
    where data_date = %s and id = %s
"""
params = ('2015-01-01', 1)
cursor.execute(query_str, params)

其中cursor是您的数据库连接游标实例。