sqlalchemy过滤关系列表中的第一项

时间:2017-12-11 21:22:14

标签: python sqlalchemy flask-sqlalchemy

我正在尝试过滤sqlalchemy查询。

我的表定义如下:

class Classroom(db.Model, Entity):
    classroom_id = db.Column('classroom_id', db.Integer, primary_key=True)

    teachers = db.relationship(
        "User",
        secondary=lambda: classroom_teacher_table
    )

其中User是另一个表(具有user_id列)。

我想查询教室,找到教师列表中第一位教师具有特定user_id的所有教室。

我可以查询教室,找到教师名单中任何教师都有这样一个特定user_id的所有教室:

tclassrooms = Classroom.query
tclassrooms = tclassrooms.filter(Classroom.teachers.any(user_id=id)).all()

但我无法弄清楚如何只检查列表中的第一位老师。

我试过了:

tclassrooms = tclassrooms.filter(Classroom.teachers[0]['user_id']==id).all()

以及其中的一系列变体,但总是出现像

这样的错误
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/sql/operators.py", line 346, in __getitem__
    return self.operate(getitem, index)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/orm/attributes.py", line 175, in operate
    return op(self.comparator, *other, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/sql/operators.py", line 346, in __getitem__
    return self.operate(getitem, index)
  File "/usr/local/lib/python2.7/site-packages/sqlalchemy/sql/operators.py", line 186, in operate
    raise NotImplementedError(str(op))

有什么想法吗?

0 个答案:

没有答案