Aplique un filtro global a todas las tablas para cada consulta en SQLAlchemy
Estamos tratando de configurar un servicio SaaS que admita la tenencia múltiple en una base de datos y esquema compartidos. Lo que estamos planeando es tener una columna tenant_id en todas nuestras tablas. lo que me gustaría hacer es que el desarrollador no tenga que escribir ningún código adicional para que mis consultas filtren automáticamente todas las tablas involucradas por esta identificación de inquilino. ¿Hay una forma transparente de lograr esto en SQL Alchemy?
Encontré cómo puede anular el objeto de consulta predeterminado:
self.session = sessionmaker(bind=engine, query_cls=TenantLimitingQuery)
Pero dentro de ese TenantLimitingQuery, ¿cómo puedo aplicarlo a todas las tablas involucradas?
class TenantLimitingQuery(Query):
def get(self, ident):
#apply filter here
Mis tablas tienen la misma columna para identificar al inquilino llamado tenant_id, por lo que en esa función get necesito filtrar por tenant_id = current_tenant_id