Python 烧瓶sqlalchemy外部连接的烧瓶棉花糖转储返回空

Python 烧瓶sqlalchemy外部连接的烧瓶棉花糖转储返回空,python,flask-sqlalchemy,json-deserialization,outer-join,flask-marshmallow,Python,Flask Sqlalchemy,Json Deserialization,Outer Join,Flask Marshmallow,我有两个表,PackMatData和ColorData: class PackMatData(db.Model): id = db.Column(db.Integer, primary_key=True) unique_name = db.Column(db.String(20), index=True, unique=True) se_name = db.Column(db.String(20), index=True) timestamp = db.Colum

我有两个表,PackMatData和ColorData:

class PackMatData(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    unique_name = db.Column(db.String(20), index=True, unique=True)
    se_name = db.Column(db.String(20), index=True)
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    labflex_name = db.Column(db.String(20))
    country = db.Column(db.String(20), index=True)
    color_measurements = db.relationship('ColorData', backref='entry', cascade="all, delete-orphan", lazy='dynamic')


class ColorData(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    color = db.Column(db.String(20), index=True)
    patch = db.Column(db.String(10), index=True)
    L = db.Column(db.String(10), index=True)
    a = db.Column(db.String(10), index=True)
    b = db.Column(db.String(10), index=True)
    pack_mat_data_id = db.Column(db.Integer, db.ForeignKey('pack_mat_data.id'))
我想加入这些表,然后序列化返回的值。我正在使用flask sqlalchemy left outer联接对PackMatData表的id执行联接:

@app.route('/api/entries')
def entries():

    pmcd = db.session.query(PackMatData, ColorData).outerjoin(ColorData, PackMatData.id == ColorData.pack_mat_data_id).all()
    data = [{"packmatdata": x[0], "colordata": x[1]} for x in pmcd]
    output = NestedSchema(many=True).dump(data)
    return jsonify(output)
通过连接,我得到了我期望的元组列表形式的数据:

[...,(<PackMatData 138>, <ColorData 7272>), (<PackMatData 138>, <ColorData 7285>),(<PackMatData 138>, <ColorData 7286>), (<PackMatData 138>, <ColorData 7287>), (<PackMatData 138>, <ColorData 7284>), (<PackMatData 138>, <ColorData 7283>), (<PackMatData 139>, <ColorData 7321>), (<PackMatData 139>, <ColorData 7322>), (<PackMatData 139>, <ColorData 7323>), (<PackMatData 139>, <ColorData 7320>), (<PackMatData 139>, <ColorData 7319>), (<PackMatData 139>, <ColorData 7311>), ...]
问题在于转储函数总是返回以下内容:

[...,{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},...]
我还尝试了这个模式(结果相同):


你能把我引向正确的方向吗?很抱歉发了这么长的帖子,但我想向您提供尽可能多的详细信息。

您有没有找到解决方案?我已经为同一个问题浪费了很多时间:(不,不幸的是,我从未找到解决方案。我最终对它进行了彻底的修改。与此同时,我发现如果你避免元组(连接表的结果),它是有效的。请看我的回答:我仍然不确定,这是否是最好的解决方案,因为它似乎不是很快(只是我的印象)你是如何工作的?
[...,{}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},...]
class PackMatDataSchema(ma.ModelSchema):  
    class Meta:
        model = PackMatData

class ColorDataSchema(ma.ModelSchema):
    packmatdata = ma.Nested(PackMatDataSchema, many=True)
    class Meta:
        model = ColorData