python - SQLAlchemy:是否可以在同一个查询中组合“like”和“in”
问题描述
我有以下 SQLAlchemy 查询工作
incomplete_list = ['a','b','c']
complete_units = []
for elem in incomplete_list:
query = Table.query.filter(Table.name.like(elem))
for row in query:
complete_units.append(row.unit_number)
我想避免使用 for 循环多次查询数据库。是否可以组合“in”和“like”运算符,以便我只查询一次数据库?或者有没有更好的方法来做这个查询?谢谢
解决方案
改编自这个答案:
incomplete_list = ['a','b','c']
complete_units = []
clauses = [Table.name.like(elem) for elem in incomplete_list]
query = Table.query.filter(or_(*clauses))
complete_units = query.all()
严格来说,此执行路径的结果可能与您的示例代码不同,因为如果Table
包含满足多个条件的行incomplete_list
,您的示例代码将多次返回同一行,而此代码只会执行一次(我相信是需要的)。
推荐阅读
- php - 重构 PHP 方法
- mongodb - 如何在 mongodb 上添加字段并使用结果进行排序
- python - Mypy + FastAPI response_model
- java - Java Try/Catch 语句异常类型
- unity3d - EasyAR:如何创建可靠的可跟踪图像目标?
- python - 在 BeautifulSoup 中进行网络抓取时,如果特定标签没有类或 id,我该如何引用它?
- python - 从两个数据帧中匹配姓名和姓氏,从一个数据帧中提取中间名并将其附加到另一个数据帧
- winapi - DIBSECTION 的大小是多少?
- c# - TransformFinalBlock 与 CryptoStream
- php - PHP Fopen 创建文件但不写入