Erstellen einer temporären Tabelle aus einer Abfrage mit sqlalchemy orm

8

Ich kann eine temporäre Tabelle auf diese Weise erstellen:

%Vor%

aber die neue Tabelle ist nicht lesbar, weil sie sagt, dass sie keinen Primärschlüssel hat. existingtable.id ist der Primärschlüssel von exisitingtable, also erwartete ich, dass es in der temporären Tabelle die gleiche Behandlung erhält.

Ich würde jedoch lieber einen ORM-Weg finden, um dies zu tun. Gegeben:

%Vor%

Wie kann ich temp_table mit einigen ausgewählten Inhalten von existingtable füllen, ohne 100000 session.query.add(TempTable(...)) Befehle auszuführen? Oder gibt es eine Möglichkeit, die Tabelle aus einer Abfrage zu erstellen, die der obigen SQL-Version ähnelt?

    
Paul 06.03.2012, 23:33
quelle

1 Antwort

11

Es ist nicht genau ORM, aber um die Tabelle zunächst zu erstellen, würde ich die Tabellenstruktur klonen (siehe cloneTable im Beispiel unten). Zum Kopieren der Daten würde ich dann die InsertFromSelect Beispiel .

Bearbeiten: Seit Version 0.8.3 unterstützt SqlAlchemy Einfügen.von_select () out of the box. Daher können die InsertFromSelect-Klasse und der jeweilige Besucher im Beispiel unten direkt ersetzt werden und werden nicht mehr benötigt. Ich lasse das ursprüngliche Beispiel aus historischen Gründen unverändert.

Hier ist ein Arbeitsbeispiel

%Vor%     
stephan 07.03.2012, 07:31
quelle

Tags und Links