SQLAlchemy,如何按空数组列过滤?

我在 SQLAlchemy 中有这种模型:

class MyModel(Base):
    __tablename__ = 'my_models'
    name = Column(String(255), nullable=False)
    company_ids = Column(ARRAY(Integer), nullable=True)

我故意创建了带有空数组的模型并尝试像这样查询它们:

db.query(MyModel).filter(~MyModel.company_ids.any())

这不会返回任何东西。

是否可以过滤具有空数组字段的模型?

============更新================

我可以使用这种方法查询它:

db.query(MyModel).filter(MyModel.company_ids == '{}')

但是我认为这只是 PostgreSQL 特定的答案

stack overflow SQLAlchemy, how to filter by empty array column?
原文答案
author avatar

接受的答案

我能够使用这种方法查询它:

db.query(MyModel).filter(MyModel.company_ids == '{}')

但是我认为这只是 PostgreSQL 特定的答案


答案:

作者头像

我认为 SQLAlchemy 的做法是

db.query(MyModel).filter(
 func.cardinality(MyModel.company_ids == 0)
)