使用可变数量的WHERE子句匹配任意数量的关键字pysqli

2024-05-29 04:40:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pysqlite来构建和搜索一个包含关键字+对应于每个关键字的url集的数据库。我搜索数据库的策略只需要1个关键字,因为它只需要SQL语句中的1个WHERE子句。比如:

  ... WHERE lexicon.word=?", keyword) 

但是,我想将任意数量的关键字匹配到我的数据库中,我认为这相当于在它们之间有几个WHERE子句或语句。因为我不知道会给我多少关键字,所以我不能假设有特定数量的WHERE子句并使用API的替换功能填充它们。在

我相信我可以使用Python的字符串插入操作来为找到的每个关键字使用OR语句来破坏WHERE语句。不过,我很确定这是相当骇人听闻的,因为它可能导致注入攻击漏洞。在

我也考虑过使用.executemany()函数,但它将运行许多单独的select,而不是包含所有需要的WHERE子句的select。在

有没有比我提到的字符串替换方法更好的方法呢?我对SQL很陌生,所以请忍受我和我的无知。谢谢。在


Tags: 方法字符串数据库urlsql数量关键字语句
1条回答
网友
1楼 · 发布于 2024-05-29 04:40:30

一个SQL查询只能有一个WHERE子句,但您可以用或连接多个比较,或者只使用一个IN表达式:

db.execute("SELECT ... WHERE lexicon.word IN (?,?,?)",
           ['Hello', 'world', 'meow'])

要构造这样一个语句,只需要一点字符串处理:

^{pr2}$

相关问题 更多 >

    热门问题