SQLAlchemy: Mehrere Datenbanken (auf demselben Server) in einer einzigen Sitzung?

8

Ich führe MS SQL Server aus und versuche, JOIN zwischen zwei Tabellen in verschiedenen Datenbanken (auf demselben Server) auszuführen. Wenn ich mit pyodbc eine Verbindung zum Server herstelle (ohne eine Datenbank anzugeben), funktioniert das folgende rohe SQL einwandfrei.

%Vor%

Leider kann ich das Analog nicht einfach mit SQLAlchemy arbeiten lassen. Ich habe dieses Thema an einigen Stellen gesehen:

Die meisten empfehlen, verschiedene Engines / Sessions zu verwenden, aber ich muss unbedingt Joins zwischen den Datenbanken durchführen, daher halte ich diesen Ansatz für nicht hilfreich. Ein weiterer typischer Vorschlag ist die Verwendung des Parameters schema , aber das scheint bei mir nicht zu funktionieren. Zum Beispiel funktioniert das Folgende nicht.

%Vor%

Ich habe auch Varianten versucht, wo schema='DatabaseA' und schema='dbo' . In allen Fällen gibt SQLAlchemy ein NoSuchTableError für beide Tabellen A und B aus. Irgendwelche Ideen?

    
user41140 22.10.2013, 14:24
quelle

2 Antworten

1

Wenn Sie ein Synonym in einer der Datenbanken erstellen können, können Sie Ihre Abfrage für diese einzelne Datenbank lokal halten.

%Vor%

Ihre Anfrage wird dann zu:

%Vor%     
Wes H 20.12.2016 19:52
quelle
0

Ich kann einen Test genau hier ausführen, der von zwei entfernten Datenbanken reflektiert wird, und es funktioniert gut.

  1. Verwenden Sie eine aktuelle SQLAlchemy (0.8.3 empfohlen mindestens)?

  2. schalte "echo = 'debug'" ein - welche Tabellen findet es?

  3. nach dem alle reflektieren, was ist in metadataA.tables metadataB.tables?

  4. ist die Hülle hier genau was ist auf SQL Server? (z.B. Tabelle A). Bei Verwendung eines Groß- und Kleinschreibungsbezeichners wird dieser in Anführungszeichen gesetzt.

zzzeek 02.11.2013 21:31
quelle

Tags und Links