简体   繁体   English

使用torndb搜索文本的python

[英]python using torndb to search text

I want when user search "lost computer" then all records that has word "lost" and "computer" will be shown by using torndb python, i know it is easy just to use SQL statement AND operator, but making a dynamic query will be dangerous because of SQL injection, for example I have query below 我想当用户搜索“丢失的计算机”时,所有使用单词“丢失的”和“计算机”的记录将通过使用torndb python显示,我知道仅使用SQL语句AND运算符就很容易,但是进行动态查询将很容易由于SQL注入很危险,例如我在下面查询

def RedownloadListSelect(self, searchtext):
    searchtext = "%" + searchtext + "%"
    return self.db.query("SELECT * FROM RedownloadList WHERE column like %s", searchtext)

but above only capable to search the whole word which means that "lost 1 computer" or "lost 2 computer" won't be found if user search using text "lost computer". 但以上仅能搜索整个单词,这意味着如果用户使用文本“丢失的计算机”进行搜索,则不会找到“丢失的1台计算机”或“丢失的2台计算机”。 If I split the searchtext using space and concatenante it using AND, I think it allows for SQL injection so I decide to stick with torndb feature using arguments. 如果我使用空格分割searchtext并使用AND对其进行串联,则我认为它允许SQL注入,因此我决定使用参数坚持使用torndb功能。

Anyone has any idea how to search with multiple AND operator using a single searchtext that does not expose SQL injection threat? 任何人都知道如何使用不暴露SQL注入威胁的单个searchtext使用多个AND运算符进行搜索? Thanks 谢谢

You can do it this way: 您可以这样操作:

searchtext='lost computer'
searchwords = searchtext.split()
query = "SELECT * FROM RedownloadList WHERE" + " AND ".join(["column like %s"]*len(searchwords))
self.db.query(query, searchwords)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM