在SQL Alchemy ORM上实现和,或者不查询

时间:2013-04-29 22:49:04

标签: orm sqlalchemy

我只是在学习SQL Alchemy并使用ORM来提取记录。

但是,有些功能似乎对于提取记录的其他方式是唯一的,例如sqlalchemy.and_', sqlalchemy.or_'等。

我想知道如何使用ORM但仍然使用一些“OR”子条款,所以我可以这样做:给定一个ORM对象Person选择姓氏为“Smith”或“Lee”的所有记录“或”主教“但不包括年龄小于18岁的记录。

如果我使用ORM,这是否可行?

1 个答案:

答案 0 :(得分:4)

默认情况下,filter子句附加AND。所以下面的代码会这样做:

from sqlalchemy import or_

qry = (session.query(Person).
    filter(or_(Person.LastName == 'Smith', Person.LastName == 'Lee', Person.LastName == 'Bishop')).
    filter(Person.age >= 18)
    )