SQLalchemy:选择与另一个表具有多对多关系的所有行

时间:2017-03-15 14:45:03

标签: python database sqlalchemy flask-sqlalchemy

我有以下数据库设置

descriptors = db.Table('descriptors',
   db.Column('object_id', db.Integer, db.ForeignKey('object.id')),
   db.Column('descriptor_id', db.Integer, db.ForeignKey('descriptor.id'))
)

class Descriptor(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(2000))
    ...
    objects = db.relationship('Object', secondary=descriptors, backref=db.backref('descriptors'))
def __repr__(self):
    return '<Descriptor %r>' % (self.id)  

class Object(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    ...
def __repr__(self):
    return '<Object %r>' % (self.id)

我想选择所有具有描述符的对象。含义我想选择描述符表中具有object_id的所有对象。但由于我不能直接查询描述符表,我不知道如何得到它?

1 个答案:

答案 0 :(得分:1)

您可以使用过滤器中的any运算符,例如:

session.query(Object).filter(Object.descriptors.any())