python - 如何在 Flask SQLAlchemy 中按多个条件进行过滤?

标签 python mysql flask sqlalchemy flask-sqlalchemy

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

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')

关于python - 如何在 Flask SQLAlchemy 中按多个条件进行过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46141867/

相关文章:

mysql - SQL 按总和过滤

python - 以自定义形式使用 Django 时间/日期小部件

python - Pycharm Debug模式语法错误

python - 时间戳数组的年份与今天的差异

mysql - 尝试在单个表中显示员工主管的姓名

python - IBM Cloud Kubernetes 部署的 URL

python - 根据多个条件分配值

php - 如何在 INSERT 中执行 foreach?

jquery:来自服务器的实时消息传递?

Python&Peewee - 动态 where 子句