[SQLAlchemy] Objekt-Reihenfolge bei Modifzierung beibehalten

Ich nutze hier SQLAlchemy und Python3.4 mit PostgreSQL.

Wenn ich Objekte verändere und diese wieder in die DB zurückschreibe (session.add() + session.commit()) landet das eigentlich bereits bestehende Objekt bzw. die Zeile ans Ende der Tabelle.

Warum das passiert ist mir schon klar, aber ich möchte das gerne verhindern.

Es gibt keine “Ende der Tabelle”.
Datensätze einer relationalen Tabelle haben KEINE Sortierung.

Die einzige (wirklich: die einzige) Möglichkeit Datensätze sortiert auszugeben ist, beim SELECT ein ORDER BY zu verwenden.

Wenn Du also die Datensätze in einer bestimmten Reihenfolgen anzeigen willst, dann verwende ein ORDER BY. Selbst wenn Du die Daten nicht änderst, steht es der Datenbank frei die Datensätze in einer beliebigen Reihenfolge zu liefern wenn kein ORDER BY angegeben ist (z.b. weil zwei Statements die gleichen Daten lesen, oder weil der Zugriffspfad des Statement z.B. einen Hash Join verwendet um nur zwei Möglichkeiten zu verwenden).

Wie castorp schon gesagt hat, das machen Datenbanken so. Wenn ich eine Reihung erzwinge will führe ich immer ein extra Feld ein, das einen ‘sortierbaren’ Wert enthält, also ein Integer, Serial oder Timestamp, je nachdem was am nützlichsten ist.

Gruß Uwe