为了账号安全,请及时绑定邮箱和手机立即绑定

如何在可变数组中使用 SQLAlchemy 进行搜索

如何在可变数组中使用 SQLAlchemy 进行搜索

动漫人物 2021-07-02 14:18:32
我正在尝试使用可变数组来存储带有 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

并使用它。


查看完整回答
反对 回复 2021-07-06
  • 1 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信