Примените глобальный фильтр ко всем таблицам для каждого запроса в 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

Ответы на вопрос(1)

Ваш ответ на вопрос