Flask SQLAlchemy select child object - return JSONB 列

Flask SQLAlchemy select child object - return JSONB column

我有 class 和 one-many 关系。我想 return 所有 parent 的 children 的关系;具体来说,我想 return 我的 children 表中的所有 JSONB objects。

这些是我的 class:

class Parent(db.Model):
    __tablename__ = ‘parent220416'
    id = db.Column(db.Integer, primary_key=True)
    children = db.relationship(‘Child’, backref=‘Parent’, lazy='dynamic')

class Child(db.Model):
    __tablename__ = ‘child220416'
    id = db.Column(db.Integer, primary_key=True)
    parentid = db.Column(db.Integer, db.ForeignKey('words220416.id'))
    data = db.Column(JSONB)

然后使用 Flask Restful,我正在尝试 select 所有 child 像这样:

class ParentChild(Resource):
    def get(self, id):
           result = db.session.query(Parent).get(id)
           result_child = result.children
           return {'child': result_child}

出现错误:

raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <sqlalchemy.orm.dynamic.AppenderBaseQuery object at 0x106178da0> is not JSON serializable

如果您想获取父项的每个子项的所有 data 对象。您可以执行以下查询:

result_child = db.session.query(Child.data).filter(Child.parentid == id).all()

如果要使用 children 关系,可以对其进行迭代:

result_child = [child.data for child in result.children]