我想我可以在互联网上的某个地方找到这个问题的答案,但我似乎错过了。你可以查询一个表中的所有行,其中一个数组列包含一个特定的值:
MyModel.query.filter(Mymodel.arrayField.contains(['someValue'])
您可以输入多个值,这样数组必须包含所有指定的值:
MyModel.query.filter(Mymodel.arrayField.contains(['someValue', 'anotherValue'])
但是查询和数组包含至少一个指定值的情况如何呢?也就是说,查询将返回arrayField
包含'someValue'
或'anotherValue'
的行,也可以同时包含'someValue'
和'anotherValue'
,但不一定同时包含arrayField
和'anotherValue'
。
我该怎么做?
1条答案
按热度按时间rt4zxlrg1#
这里的Postgresql概念是overlapping数组,使用
&&
运算符实现:SQLAlchemy在实现
&&
的Postgresql方言的ARRAY类型上提供了一个重叠方法。检查至少包含
'a'
和'z'
之一的列的ORM查询如下所示或SQLAlchemy 2.0样式:
或者,如果您更喜欢更接近Postgres语法: