我在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
答案 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
是您的数据库连接游标实例。