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.

Reply via email to