我希望当用户搜索“丢失的计算机”时,所有使用torndb python显示有“丢失”和“计算机”字样的记录,我知道只使用SQL语句AND运算符很容易,但是制作动态由于SQL注入,查询将是危险的,例如我在下面有查询
def RedownloadListSelect(self, searchtext):
searchtext = "%" + searchtext + "%"
return self.db.query("SELECT * FROM RedownloadList WHERE column like %s", searchtext)
但是上面只能搜索整个单词,这意味着如果用户使用文本“丢失的计算机”进行搜索,将无法找到“丢失1台计算机”或“丢失2台计算机”。如果我使用空格分割searchtext并使用AND连接它,我认为它允许SQL注入,所以我决定使用参数坚持使用torndb功能。
任何人都知道如何使用不暴露SQL注入威胁的单个搜索文本来搜索多个AND运算符?感谢
答案 0 :(得分:1)
你可以这样做:
searchtext='lost computer'
searchwords = searchtext.split()
query = "SELECT * FROM RedownloadList WHERE" + " AND ".join(["column like %s"]*len(searchwords))
self.db.query(query, searchwords)