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

时间:2018-10-04 09:17:02

标签: python sqlalchemy flask-sqlalchemy

我正在尝试使用可变数组通过SQLAlchemy和Postgres存储数据,并编写了以下类:

 Snackbar snackbar = Snackbar.make(coordinatorLayout, "Welcome to AndroidHive", Snackbar.LENGTH_LONG);

 snackbar.show();

而且我可以更新已加星标的属性,并在其中添加和弹出项目。我的问题是如何搜索在数组中具有特定项目的行。这是我的查询:

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 value


class 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()

我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

似乎db.ARRAY是SQL标准/多厂商数组类型sqlalchemy.types.ARRAY。相反,您应该使用方言特定类型(如错误中所述)sqlalchemy.dialects.postgresql.ARRAY。简而言之:

from sqlalchemy.dialects.postgresql import ARRAY

并使用它。