gpt4 book ai didi

mysql - 如何对关联表进行 FLASK SQLALCHEMY 查询

转载 作者:行者123 更新时间:2023-11-29 17:32:10 25 4
gpt4 key购买 nike

我有两个处于多对多关系的模型,我想在一个查询中获取相关模型中的所有列值。但使用 Flask SQLAlchemy 无法得到它。

但是我能够使用 phpmyadmin 中的 SQL 查询获取所需的数据。

这是查询

SELECT ply_positions.plyPositionId, ply_positions.plyPositionName, ply_positions.createdAt, ply_positions.updatedAt, product_categories.productCatName FROM ply_positions JOIN product_category_ply_position AS product_category_ply_position_1 ON ply_positions.plyPositionId = product_category_ply_position_1.plyPositionId JOIN product_categories ON product_categories.productCatId = product_category_ply_position_1.productCatId

以下是 Gist 上模型资源的代码:- https://gist.github.com/himadriganguly/c0c9d7e247c286e497998dbd33ce7e84

输出:

[ { "product_category": [ 1 ], "plyPositionId": 2, "updatedAt": null, "product_category_associations": [ { "productCatId": 1, "plyPositionId": 2 } ], "createdAt": 1234, "plyPositionName": "Flute" }, { "product_category": [ 1 ], "plyPositionId": 1, "updatedAt": null, "product_category_associations": [ { "productCatId": 1, "plyPositionId": 1 } ], "createdAt": 123, "plyPositionName": "Top" } ]

获取关联表的输出,但不获取product_categories表的列值。

此外,在创建关系时,我们使用了两次惰性,但我不清楚为什么要这样做。

ply_position = db.relationship('PlyPositionModel', secondary="product_category_ply_position", lazy=True, backref=db.backref('product_category', lazy=True))

提前谢谢大家。

最佳答案

我想我已经弄清楚这不是 SqlAlchemy 的问题,而是关于如何序列化数据的问题。在本例中,我使用flask-marshmallow。

所以在 plyPositionResource.py 中我必须稍微改变一下架构

产品类别架构

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

PlyPositionSchema

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)

希望这对其他人有帮助。

如果有其他方法可以解决问题,请随时发表评论。

关于mysql - 如何对关联表进行 FLASK SQLALCHEMY 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50552140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com