SQLAlchemy, как фильтровать по пустому столбцу массива?

#python #sqlalchemy

#python #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

Ответ №1:

Я смог запросить его, используя этот метод:

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

Однако я думаю, что это только конкретный ответ PostgreSQL

Ответ №2:

Я думаю, что способ SQLAlchemy сделать это

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