В django есть Q object который позволяет создать определённый фильтр. Есть ли такой же у Sqlalchemy?
Asked
Active
Viewed 22 times
1 Answers
0
В Алхимии грубо говоря есть поддержка Q-объектов из коробки, правда нужно использовать filter а не filter_by, да и вообще советую всегда использовать filter. Вы можете просто записать clause в переменную и потом использовать в фильтре, например:
clause1= case([
(Application.using_priority_rights==True, 1),
],
else_=1000)
clause2= case([
(func.coalesce(AbiturPerson.achievements, '') != '', 1),
],
else_=1000)
clause3 = (AbiturPerson.id==Application.id)
clause4 = (AbiturPerson.id==5)
query1 = query.filter(clause3).order_by(
clause1,
clause1,
)
query2 = query.filter(
clause1==1000,
)
query3 = query.filter(*[clause3, clause4 ])
Если нужны различные AND/OR комбинации условий - то используйте экспрессию https://docs.sqlalchemy.org/en/latest/core/sqlelement.html?highlight=and_#sqlalchemy.sql.expression.and_ https://docs.sqlalchemy.org/en/latest/core/sqlelement.html?highlight=and_#sqlalchemy.sql.expression.or_
PaiNt
- 311