文章内容
2019/6/23 18:40:53,作 者: 黄兵
SQLAlchemy多对多查询方式
在上一篇文章中:SQLAlchemy多对多的建表方式,讲了如何通过SQLAlchemy的模型创建数据表,但是建完数据表之后,如何查询也成了一个问题。
下面看看具体的查询实例:
property_name_all = PrivateNumberProperty.query.filter_by(private_number_catalog_id=id) \ .order_by(PrivateNumberProperty.id) property_name_all.filter_by(id=item.id).first().PrivateNumberTag.all()
其中PrivateNumberTag
已经在PrivateNumberProperty
模型中有所定义。
下面再看一个实例:
# 公共属性值 class PrivateNumberPropertyValue(db.Model): __tablename__ = 'private_number_property_value' id = db.Column(db.Integer, primary_key=True) property_value = db.Column(db.String(128)) alias_value = db.Column(db.String(128)) value_numerical = db.Column(db.Integer) property_name_id = db.Column(db.Integer, db.ForeignKey('private_number_property_name.id')) UserShoppingCarts = db.relationship('UserShoppingCart', backref='private_number_property_value', lazy='joined') PrivateNumberPrices = db.relationship('PrivateNumberPrice', secondary=pp, backref=db.backref('private_number_property_value', lazy='dynamic'), lazy='dynamic', single_parent=True, cascade='all, delete-orphan')
PrivateNumberPropertyValue
与PrivateNumberPrice
之间存在多对多的关系。
价格与产品之间存在多对多的关系。当然这个不是很合理,但是在某些场景中,这个也没有什么问题。
具体查询如下:
number_section = PrivateNumberPropertyValue.query.get_or_404(cart_list['NumberSection']) price = number_section.PrivateNumberPrices.first().price
通过PrivateNumberPropertyValue
模型里面的PrivateNumberPrices
与PrivateNumberPrice
表建立了相关联。
下面是我理解的一个草图:
当然这是我个人理解,理解有误欢迎大家指正。
黄兵个人博客原创。
转载请注明出处:黄兵个人博客 - SQLAlchemy多对多查询方式
评论列表