[PYTHON] Unterstützt mehrere Sitzungen mit SQL Alchemy

Einführung

AWS Aurora verfügt über verschiedene Schreib- und Leseendpunkte. Wir haben zusammengefasst, wie SQL Alchemy in Python in solchen Fällen unterstützt werden kann.

Die Voraussetzung ist also, dass das Modell dasselbe ist, nur die Endpunkte zum Schreiben und Lesen unterschiedlich sind.

Umgebung

python 3.8.1 SQLAlchemy 1.3.12

query_property kann nicht verwendet werden

Leider kann query_property, eine praktische Funktion von SQLAlchemy, nicht verwendet werden, da eine Sitzung in der Anwendung erwartet wird. In Bezug auf Code war es sehr praktisch, wie folgt zu schreiben, aber zwei Sitzungen sind unbedingt erforderlich, um mehrere Datenbanken zu unterstützen.

User.query.all()

Was ist dann zu tun

Sie können zwei Sitzungen erstellen und diese normal aufrufen. Es ist also so, als würde man einen Abfrageanruf mithilfe einer Sitzung schreiben.

session.query(User).all()

Beachten Sie außerdem, dass die in einer Sitzung erfassten Daten zu einem Fehler führen, wenn Sie eine andere Sitzung so wie sie ist einfügen oder aktualisieren. Insbesondere funktioniert der folgende Code nicht. Ich denke, dass es funktionieren wird, wenn Sie den Status irgendwo in den erfassten Daten löschen, aber es ist sicherer, ihn gehorsam auf ein anderes Objekt zu übertragen.

read_session = read_session()
users = read_session.query(User).all()

write_session = write_session()
write_session.add_all()

Ganzer Quellcode

Ich werde es auf Github veröffentlichen, bitte sehen Sie das für Details.

https://github.com/tasogarei/sqlalchemy_multi_session_sample

abschließend

query_property Es ist praktisch, aber ich habe aufgegeben, weil ich damit nicht umgehen konnte. Wenn das Modell für jede Datenbank aufgeteilt ist, können Sie meiner Meinung nach, wenn Sie mehrere deklareative_base () erstellen, diese miteinander verknüpfen, und es wird funktionieren. Es wurde jedoch nicht verifiziert. Wenn ich mit dem fertig bin, was ich jetzt tun möchte, werde ich es überprüfen.

Recommended Posts

Unterstützt mehrere Sitzungen mit SQL Alchemy
Verwenden Sie Enum mit SQLAlchemy
Holen Sie sich die Tabelle dynamisch mit sqlalchemy
Verwenden Sie DATE_FORMAT mit dem SQLAlchemy-Filter
Einführung in RDB mit sqlalchemy Ⅰ
Wie aktualisiere ich mit SQLAlchemy?
Wie mit SQLAlchemy ändern?
Unterstützen Sie sich mit der Twitter API
Präsentationsunterstützungssystem mit Python3
Wie lösche ich mit SQLAlchemy?
Umgang mit Sitzungen in SQLAlchemy
Verwenden der SQL-Datenbank von Azure mit SQL Alchemy
Stellen Sie mit SQL Alchemy eine Verbindung zu mehreren Datenbanken her
Beschleunigen Sie die Abfragegenerierung mit SQLAlchemy ORM
Kombination von polymorpher Vererbung und vielen zu vielen mit SQLAlchemy
Einführung in RDB mit sqlalchemy II
Verwenden von Sitzungen und Reflexionen mit SQL Alchemy
So verbinden Sie INNER mit SQL Alchemy