Примените глобальный фильтр ко всем таблицам для каждого запроса в SQLAlchemy.
Мы пытаемся настроить службу SaaS, которая поддерживает мультитенантность в общей базе данных и схеме. Мы планируем иметь столбец tenant_id во всех наших таблицах. я хотел бы, чтобы разработчику не приходилось писать какой-либо дополнительный код, чтобы мои запросы автоматически фильтровали все задействованные таблицы по этому идентификатору клиента. Есть ли прозрачный способ достичь этого в SQL Alchemy?
Я нашел, как вы можете переопределить объект запроса по умолчанию:
self.session = sessionmaker(bind=engine, query_cls=TenantLimitingQuery)
Но внутри этого TenantLimitingQuery, как можно применить его ко всем задействованным таблицам?
class TenantLimitingQuery(Query):
def get(self, ident):
#apply filter here
Мои таблицы имеют один и тот же столбец для идентификации арендатора с именем tenant_id, поэтому в этой функции get мне нужно отфильтровать по tenant_id = current_tenant_id