I have a is_deleted
field in all tables which shows that this record has been removed (but it exists in tables).
So how to ignore (never consider) is_deleted=True
records in all queries in SQLAlchemy?
I have a is_deleted
field in all tables which shows that this record has been removed (but it exists in tables).
So how to ignore (never consider) is_deleted=True
records in all queries in SQLAlchemy?
the sqlalchemy event is the solution!
from sqlalchemy.orm.query import Query
from sqlalchemy import event
@event.listens_for(Query, "before_compile", retval=True)
def no_deleted(query):
for desc in query.column_descriptions:
entity = desc['entity']
if entity:
query = query.filter(entity.is_deleted == False)
return query
if you want specify model name(sqlalchemy model class name) such as 'User' in my case use this:
if entity == 'User':
query = query.filter(entity.is_verified == True)