Python 炼金术中如何根据多个标准进行筛选?

Python 炼金术中如何根据多个标准进行筛选?,python,mysql,flask,sqlalchemy,flask-sqlalchemy,Python,Mysql,Flask,Sqlalchemy,Flask Sqlalchemy,我有一个数据库,如下所示,工作良好。现在我有一个名为Bob的用户,他拥有Mainspace空间。我想得到一个布尔值,看看他是否是这个空间的所有者。我尝试应用两个过滤器,但出现以下错误 sqlalchemy.exc.InvalidRequestError: Can't compare a collection to an object or collection; use contains() to test for membership. 命令: exists = Space.query.fi

我有一个数据库,如下所示,工作良好。现在我有一个名为Bob的用户,他拥有Mainspace空间。我想得到一个布尔值,看看他是否是这个空间的所有者。我尝试应用两个过滤器,但出现以下错误

sqlalchemy.exc.InvalidRequestError: Can't compare a collection to an object or collection; use contains() to test for membership.
命令:

exists = Space.query.filter_by(name="Mainspace", owner="Bob").first()
数据库:

space_access = db.Table('space_access',
    db.Column('userid', db.Integer, db.ForeignKey('user.id')),
    db.Column('spaceid', db.Integer, db.ForeignKey('space.id')))

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(15), unique=True)
    email = db.Column(db.String(50), unique=True)
    password = db.Column(db.String(80))
    role='admin';

    spaces = db.relationship('Space', secondary=space_access, backref=db.backref('owner', lazy='dynamic'))

class Space(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), unique=True)
    type = db.Column(db.String(50), unique=True)
试试这个:

existing = User.query.join(User.spaces).filter(User.username=='Bob', Space.name=='Mainspace').first()
print(existing.id)
if existing != None:
  print('Exists')

筛选依据()。首先()。First()返回匹配项或无。由于匹配项是非零的,所以可以将其视为布尔值。我无法将其添加到筛选条件中。请参阅上面我编辑的文章。筛选依据()可以包括多个条件:筛选依据(name='mainspace',owner='Bob')。first()。烧瓶大量使用炼金术。我建议您暂停阅读SQLAlchemy文档和/或在线搜索一些教程。这对你有好处我也试过了。没用。我想我必须加入一些东西,或者我的backref指向了错误的表。是否可能您的查询是正确的,但您在查询中缺少类名?从,
session.query(MyClass).filter\u by(name='some name')
。单据包括多条件过滤的情况。