sql >> Database >  >> RDS >> Mysql

Als ik verbinding maak met meerdere databases, heb ik dan meerdere SQLAlchemy Metadata-, Base- of Session-objecten nodig?

Het korte antwoord is dat het het gemakkelijkst is om voor beide databases aparte instances van allemaal te hebben. Het is mogelijk om een ​​enkele routing te maken sessie , maar het heeft zijn kanttekeningen.

De sessionmaker en Session ondersteunt ook het doorgeven van meerdere bindt als argument en 2-fasen commits , waarmee ook een enkele sessie met meerdere databases kan worden gebruikt. Het toeval wil dat de 2 databases die 2-fasen commits ondersteunen PostgreSQL en MySQL zijn.

Over de relatie tussen Base en metadata :

Base is een basisklasse die een metaklasse heeft die wordt gebruikt om declaratief Table te maken objecten van informatie die in de klasse zelf en zijn subklassen wordt verstrekt. Alle Table objecten impliciet gedeclareerd door subklassen van Base deelt dezelfde MetaData .

U kunt metadata verstrekken als argument bij het maken van een nieuwe declaratieve basis en deze dus te delen tussen meerdere Base s, maar in jouw geval is het niet nuttig.

MetaData is een verzameling van Table objecten en de bijbehorende schemaconstructies. Het kan ook een binding hebben met een Engine of Session .

Kortom, u kunt Table . hebben s en MetaData zonder een Base , maar een Base vereist MetaData om te functioneren.




  1. Gegevens in meerdere tabellen invoegen met spring jdbcTemplate

  2. MySQL-selectiequery met variabele kolomnaam

  3. Gegevens uit MySQL naar json-array halen

  4. Hoe kan ik MySQL-queryresultaten in CSV-indeling uitvoeren?