Speichert SQLAlchemy die Reihenfolge beim Hinzufügen von Objekten zur Sitzung?

10

Besteht diese Behauptung immer oder nicht? Mit anderen Worten, speichert SQLAlchemy die Reihenfolge (beim Generieren von INSERT-Abfragen) beim Hinzufügen neuer Objekte zur Sitzung?

%Vor%

Keine, in der Produktion verwende ich postgresql, sqlite ist zum Testen.

    
Taha Jahangir 14.04.2012, 14:28
quelle

2 Antworten

8

Nachdem wir uns ein wenig die SQLAlchemy-Quelle angesehen haben, sieht es wie add() Datensätze aus, als es eingefügt wurde: Ссылка

Das relevante Snippet:

%Vor%

Und das heißt von Session.add = & gt; self._save_or_update_state = & gt; self._save_or_update_impl = & gt; self._save_impl .

Es wird dann beim Speichern in _sort_states verwendet: Ссылка

Dies ist leider nur der Nachweis auf der Implementierungsebene. Ich konnte nichts in der Dokumentation finden, die es garantiert ...

Aktualisieren : Ich habe seither ein bisschen mehr in diese Sache hineingeschaut, es stellt sich heraus, dass es in SQLAlchemy ein Konzept namens Unit of Work gibt, das die Reihenfolge während eines Flushes etwas definiert: Ссылка (Suche nach Unit of Work).

Innerhalb derselben Klasse wird die Reihenfolge in der Tat durch die Reihenfolge bestimmt, in der add aufgerufen wurde. Möglicherweise sehen Sie jedoch unterschiedliche Sortierungen in den INSERTs zwischen verschiedenen Klassen. Wenn Sie das Objekt a vom Typ A hinzufügen und später das Objekt b vom Typ B hinzufügen, aber a einen Fremdschlüssel für b aufweist, wird ein INSERT für% co_de angezeigt % vor dem INSERT für b .

    
munchybunch 14.11.2013, 23:42
quelle
-2

Nein, es tut sie, wenn Sie sich verpflichten, nicht wenn Sie hinzufügen.

    
rapadura 14.04.2012 14:36
quelle

Tags und Links