首页 > 解决方案 > Flask SQLalchemy 多对多:选择和更新

问题描述

我对 SQLAlchemy 完全陌生,非常感谢您的帮助。

我有这两个具有多对多关系的模型:

class Item(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), unique=True, nullable=False)
    tags = db.Column(db.String(120), nullable=False)

class Collection(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user = db.Column(db.Integer, db.ForeignKey('users.id'))
    name = db.Column(db.String(80), nullable=False)

    items = db.relationship('Item', secondary=sets, lazy='subquery')


sets = db.Table( 'sets',
    db.Column('item_id', db.Integer, db.ForeignKey('item.id'), primary_key=True),
    db.Column('collection_id', db.Integer, db.ForeignKey('collection.id'), primary_key=True)
    db.Column('rating', db.Integer, nullable=True),
    db.Column('status', db.Integer, nullable=True)
)

我正在尝试选择项目:

WHERE collection_id = 100
ORDER BY rating DESC
LIMIT 30

在对这些项目进行一些操作后,我还需要更新它们的status. 如何以正确的方式完成?

对于选择,我猜它类似于

db.session.query(Collection.items).filter_by(collection=100).order_by(rating.desc())

谢谢!

标签: pythonsqlalchemyflask-sqlalchemy

解决方案


推荐阅读