Wie finde ich den Klassen- oder Klassennamen von sqlalchemy remote side object ohne db-Abfragen?

7

Lassen Sie uns Klassen X und Y und Beziehungen zwischen ihnen x2y und y2x haben. Mit dem Klasseniterator class_mapper (Class) .iterate_properties können wir alle Klasseneigenschaften abrufen. Also x2y und y2x sind RelationshipProperty und was ich zu bekommen hoffe, ist eine Klasse oder ein Klassenname von Objekten auf der entfernten Seite der Relation.

Ich habe bereits versucht, eine Lösung zu finden. Ich habe x2y.remote_side[0].table.name gefunden, eine tables_map erstellt, die einen Tabellennamen einer Klasse zuordnet und für Eins-zu-Viele und Eins-zu-Eins funktioniert. Wenn ich es für Viele-zu-Viele verwende, ist der Tabellenname eine Assoziationstabelle.

Irgendwelche Hinweise, wie ich die Remote-Side-Klasse bekommen kann?

    
mdob 27.07.2011, 10:53
quelle

2 Antworten

18

X.x2y.property.mapper.class _

relatonshipproperty wird schließlich die Attributdokumentation auf Klassenebene genauso erhalten wie der Mapper jetzt.

bearbeiten. Hier ist ein Test, der das obige zurückkehrende "Y" von "X" illustriert, und keine Reflektion schafft keine Beziehungen, sollte also keinen Effekt haben:

%Vor%     
zzzeek 27.07.2011, 19:32
quelle
1

Ich habe festgestellt, dass eine method argument () relationship-Eigenschaft die entfernte Klasse zurückgibt.

%Vor%     
mdob 31.07.2011 12:21
quelle