Thank you, Jonathan, that wiki example has helped a lot. I've extended it a bit to also add the extra condition to joined tables.
I want to take it one step further now and automatically convert session.delete()s into update statements (set is_deleted = true) instead of delete statements. I've experimented with a custom SessionExtension, but my implementation is not having the desired effect. Here is my code: class SoftDeleteExtension(SessionExtension): def before_flush(self, session, flush_context, instances): print("SoftDeleteExtension::before_flush()") for instance in session.deleted: if not attributes.instance_state(instance).has_identity: continue instance._deleted = True # Modify the deleted instance session.deleted.pop() # Remove the instance from the list of entities to be deleted Thank you and kind regards, Jaco On Tuesday, 16 May 2017 17:20:12 UTC+1, Jonathan Vanasco wrote: > > The FAQ > > http://docs.sqlalchemy.org/en/latest/faq/sessions.html#how-do-i-make-a-query-that-always-adds-a-certain-filter-to-every-query > > points to an example in the wiki: > https://bitbucket.org/zzzeek/sqlalchemy/wiki/UsageRecipes/PreFilteredQuery > > > -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.