gpt4 book ai didi

python - 使用 MySQLdb 处理 SQL 查询中的多个参数

转载 作者:行者123 更新时间:2023-11-29 21:26:14 26 4
gpt4 key购买 nike

我有一个场景,需要排除数千个具有特定域名的电子邮件 ID。

我当前的查询是

Select * from users where email NOT LIKE '%abc.com' 
AND email NOT LIKE '%efg.com'
AND email NOT LIKE '%xyz.com'

当我转向Python时,我写了一个像这样的查询

MySQLcursor.execute (Select * from users where email NOT LIKE '%abc.com' 
AND email NOT LIKE '%efg.com'
AND email NOT LIKE '%xyz.com' )

我可以制作一个通用域列表并将其排除吗?

我尝试的是

list_of_domains = ('%%abc.com','%%xyz.com','%%efg.com')
MySQLcursor.execute (Select * from users where email NOT LIKE %(exclude_domain)s, {"exclude_domain":list_of_domains} )

如果 list_of_domains 中只有 1 个值,它似乎可以工作。因为,当它解压列表时,它只能将“电子邮件不喜欢”条件与 1 个域列表相匹配。

我如何进行通用查询,以便明天如果我有新域,我只需将其添加到 list_of_domains 中即可正常工作。

不知道是否可行?有人可以帮忙吗?

最佳答案

我不喜欢使用字符串插值和连接构建查询,但是,假设您无法更改表架构,并且这是您必须执行的查询,并且您信任域列表的来源,那么这里有一些东西可以帮助您开始:

domains = [...]

pattern = "email NOT LIKE '%{0}'"
conditions = " AND ".join([pattern.format(domain) for domain in domains])
query = "SELECT * FROM users WHERE " + conditions

关于python - 使用 MySQLdb 处理 SQL 查询中的多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35496149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com