我正在使用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有关。但是那里的解决方案需要为不同的查询类创建不同的会话。
答案 0 :(得分:0)
您可以将会话传递给Query构造函数
CustomQuery(entities=[Fruit], session=session).with_seed().delete(synchronize_session='fetch')