您是否可以扩展SQLAlchemy Query类并在同一会话中使用不同的类?

时间:2016-07-28 09:01:13

标签: python orm sqlalchemy

我正在使用SQL Alchemy ORM并且有一些类/表,每个类/表都可能有一些自定义查询。比方说,我想在表格Fruit中添加名为with_seed的过滤可能性,只给我种子水果,并向表格Cutlery提供过滤方法is_sharp只给我带来尖锐刀具。我想将这些过滤器定义为Query对象的扩展,我想在同一个事务中使用它们:

def delete_sharp_cutlery_and_seedy_fruits(session_factory):
  session = session_factory()
  session.query(Fruit).with_seed().delete(synchronize_session='fetch')
  session.query(Cutlery).is_sharp().delete(synchronize_session='fetch')
  session.commit()

这可能吗?

这与问题here有关。但是那里的解决方案需要为不同的查询类创建不同的会话。

1 个答案:

答案 0 :(得分:0)

您可以将会话传递给Query构造函数

CustomQuery(entities=[Fruit], session=session).with_seed().delete(synchronize_session='fetch')