使用array.contains()

时间:2018-07-30 17:34:33

标签: python postgresql flask-sqlalchemy

我有一个数组列(需要我,我知道这不是典型的约定),需要在查询中进行过滤。我正在尝试使用contains(),

  db.session.query(table).filter((table.name.ilike
    ('%'+name+'%')),
    table.languages.contains(language)).limit(200)

但是我一直收到此错误:

    NotImplementedError: ARRAY.contains() not implemented for the base 
    ARRAY 
    type; please use the dialect-specific ARRAY type

我是Flask-Sqlalchemy的新手,所以我不确定如何正确使用它。任何帮助深表感谢!

1 个答案:

答案 0 :(得分:-1)

此期望表示您应使用dialect-specific ARRAY type代替基本的ARRAY类型。因此,在模型定义中,请使用sqlalchemy.dialects.postgresql.ARRAY代替ARRAY

from sqlalchemy.dialects.postgresql import ARRAY
class table(db.Model):
    ...
    languages = db.Column(ARRAY) # notice this ARRAY import from sqlalchemy.dialects.postgresql

现在,您可以使用db.session.query(table).filter(table.languages.contains([language])).limit(200)