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