使用 sqlalchemy 查询的 in_

问题描述 投票:0回答:1

我有一个带有

in_
过滤器的查询。我想弄清楚的是 - 使用元组或集合作为
in_
参数是否更有效,或者它们总是转换为列表?

 1. ids = [1, 2, 3]
 2. ids = {1, 2, 3}
 3. ids = (1, 2, 3)

session.query(T).filter(T.id.in_(keys)).all()

所有三种类型都可以与

in_
一起正常工作,但是...

  1. 对于
    filter
    最有效的类型是什么?
  2. 如果我有不同的类型,将其转换为这种高效类型有什么意义吗?

我查看了文档但没有找到答案。

python-3.x sqlalchemy
1个回答
0
投票

InElementImpl._literal_coercion 检查输入(如果是文字)是否是可迭代的而不是字符串,然后对其调用

list

因此,传递列表可能比传递另一个内置迭代(如集合或字典)更有效,并且肯定比传递自定义迭代更有效。

但是同意python_user评论,除非您正在处理巨大的列表,否则相对于网络等待时间、结果转换等,转换成本可能很小。

© www.soinside.com 2019 - 2024. All rights reserved.