Für jede Abfrage in SQLAlchemy @ einen globalen Filter auf alle Tabellen anwend

Wir versuchen, einen SaaS-Dienst einzurichten, der die Mandantenfähigkeit in einer gemeinsam genutzten Datenbank und einem gemeinsamen Schema unterstützt. Was wir planen, ist eine tenant_id-Spalte für alle unsere Tabellen. Was ich tun möchte, ist, dass der Entwickler keinen zusätzlichen Code schreiben muss, damit meine Abfragen automatisch alle beteiligten Tabellen nach dieser Mandanten-ID filtern. Gibt es eine transparente Möglichkeit, dies in SQL Alchemy zu erreichen?

Ich habe herausgefunden, wie Sie das Standardabfrageobjekt überschreiben können:

self.session = sessionmaker(bind=engine, query_cls=TenantLimitingQuery)

Aber in dieser TenantLimitingQuery, wie kann sie auf alle beteiligten Tabellen angewendet werden?

class TenantLimitingQuery(Query):
    def get(self, ident):
        #apply filter here

Meine Tabellen haben die gleiche Spalte, um den Mandanten mit dem Namen tenant_id zu identifiziere

Antworten auf die Frage(2)

Ihre Antwort auf die Frage