【发布时间】:2012-09-12 13:42:33
【问题描述】:
我目前正在根据用户的输入构建 SQL 查询。可以在此处查看如何完成此操作的示例:
def generate_conditions(table_name,nameValues):
sql = u""
for field in nameValues:
sql += u" AND {0}.{1}='{2}'".format(table_name,field,nameValues[field])
return sql
search_query = u"SELECT * FROM Enheter e LEFT OUTER JOIN Handelser h ON e.Id == h.Enhet WHERE 1=1"
if "Enhet" in args:
search_query += generate_conditions("e",args["Enhet"])
c.execute(search_query)
由于每次我无法在执行调用中插入值时 SQL 都会更改,这意味着我应该手动转义字符串。但是,当我搜索每个人都指向执行...
我对生成查询的方式也不太满意,所以如果有人对另一种方式有任何想法,那也很棒!
【问题讨论】:
-
表名和列名是事先知道的吗?
标签: python database sqlite escaping