我正在尝试使用可变数组来存储带有 SQLAlchemy 和 Postgres 的数据并编写了这些类:class MutableList(Mutable, list): def append(self, value): list.append(self, value) self.changed() def pop(self, index=0): value = list.pop(self, index) self.changed() return value @classmethod def coerce(cls, key, value): if not isinstance(value, MutableList): if isinstance(value, list): return MutableList(value) return Mutable.coerce(key, value) else: return valueclass Lead(db.Model): __tablename__ = 'leads' ... starred = db.Column(MutableList.as_mutable(db.ARRAY(db.Integer)))我可以更新加星标的属性,从它追加和弹出项目。我的问题是如何搜索在数组中具有特定项目的行。这是我的查询:leads = Lead.query.order_by(Lead.post_date.desc()).filter(Lead.starred.contains(current_user.id)).all()但这给了我以下错误: ARRAY.contains() not implemented for the base ARRAY type; please use the dialect-specific ARRAY type我在这里缺少什么?
1 回答
jeck猫
TA贡献1909条经验 获得超7个赞
似乎db.ARRAY
是 SQL 标准/多供应商数组类型sqlalchemy.types.ARRAY
。相反,您应该使用特定于方言的类型(如错误中所述)sqlalchemy.dialects.postgresql.ARRAY
。简而言之:
from sqlalchemy.dialects.postgresql import ARRAY
并使用它。
添加回答
举报
0/150
提交
取消