我有一个数组列(需要我,我知道这不是典型的约定),需要在查询中进行过滤。我正在尝试使用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的新手,所以我不确定如何正确使用它。任何帮助深表感谢!
答案 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)
。