如何对关联表进行sqlalchemy查询

jpfvwuh4  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(470)

在多对多关系中有两个模型,我希望在一个查询中获得相关模型中的所有列值。但不能用炼金术得到。
但是我可以使用phpmyadmin中的sql查询获得所需的数据。
这是查询
选择ply_positions.plypositionid、ply_positions.plypositionname、ply_positions.createdat、ply_positions.updatedat,product\u categories.productcatname from ply\u positions join product\u category\u ply\u position as product\u category\u ply\u positions\u 1 on ply\u positions.plypositionid=product\u category\u ply\u position\u 1.plypositionid join product\u categories on product\u categories.productcatid=product\u category\u ply\u position\u 1.productcatid
以下是gist上的模型和资源代码:https://gist.github.com/himadriganguly/c0c9d7e247c286e497998dbd33ce7e84
输出:
[{“product\u category”:[1],“plypositionid”:2,“updatedat”:null,“product\u category\u associations”:[{“productcatid”:1,“plypositionid”:2}],“createdat”:1234,“plypositionname”:“flute”},{“product\u category”:[1],“plypositionid”:1,“updatedat”:null,“product\u category\u associations”:[{“productcatid”:1,“plypositionid”:1}],“createdat”:123,“plypositionname”:“top”}]
获取关联表的输出,但不获取来自产品类别表的列值。
另外,在建立关系时,我们会使用lazy两次,但我不清楚为什么要这样做。
ply\u position=db.relationship('plypositionmodel',secondary=“product\u category\u ply\u position”,lazy=true,backref=db.backref('product\u category',lazy=true))
提前谢谢大家。

h7wcgrx3

h7wcgrx31#

我想我已经弄明白了这不是sqlalchemy的问题,而是关于如何序列化数据的问题。在这种情况下,我用的是瓶装棉花糖。
所以在plypositionresource.py中,我必须稍微更改模式
产品分类方案

class ProductCategorySchema(ma.ModelSchema):
    class Meta:
        model = ProductCategoryModel

位置示意图

class PlyPositionSchema(ma.ModelSchema):
    productcategories = fields.List(fields.Nested(ProductCategorySchema))
    class Meta:
        model = PlyPositionModel

然后在get函数中可以执行以下操作

def get(self):
        plyPositionResource = PlyPositionModel.query.order_by(\
            PlyPositionModel.plyPositionId.desc())\
            .all()

        plyPositions = plypositions_schema.dump(plyPositionResource).data

        return({"data": plyPositions}, 200)

希望这能帮助别人。
如果有其他解决问题的方法,请随时发表意见。

相关问题