Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLalchemy多对多:选择并更新_Python_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python SQLalchemy多对多:选择并更新

Python SQLalchemy多对多:选择并更新,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,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.

我对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
在对这些项目进行一些操作之后,我还需要更新它们的
状态。如何以适当的方式做到这一点

对于select,我想是这样的

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

谢谢大家!

对于sqlalchemy中的标准多对多,关系只关心辅助表中的外键列,并且对用户是透明的。对于次表中包含的信息比标准模式中包含的信息多的情况,标准模式是使用。你见过那部分文档吗?(对超人说)我还没见过,谢谢