Seite 1 von 1
SqlAlchemy erhaltener primary Key
Verfasst: Montag 14. März 2011, 20:49
von sprudel
Hallo,
ich habe eine Frage zu SQLAlchemy:
Ist es möglich direkt nach dem Ausführen eines Insert-Befehls den via AUTO INCREMENT erhaltenen Primärschlüsselwert zu erhalten, um ihn dann weiterzuverarbeiten?
Wäre echt super.
LG Chrsi
Re: SqlAlchemy erhaltener primary Key
Verfasst: Montag 14. März 2011, 20:54
von ms4py
Nach dem ``commit`` müsstest du dieses Feld von deinem Datenobjekt abrufen können.
Re: SqlAlchemy erhaltener primary Key
Verfasst: Montag 14. März 2011, 21:24
von sprudel
Vielen Dank schonmal.
Ist es irgendwie möglich ein Autocommit zu erzwingen, so dass der Wert sofort verfügbar ist?
Re: SqlAlchemy erhaltener primary Key
Verfasst: Montag 14. März 2011, 21:39
von deets
ms4py hat geschrieben:Nach dem ``commit`` müsstest du dieses Feld von deinem Datenobjekt abrufen können.
Guten Tag Herr Henne, mein Name ist Ei!
Nach einem Commit ist ein Datenobjekt ungueltig, und man braucht die ID, um es zu bekommen (oder ein anderes eindeutiges Kriterium).
@sprudel
Ich benutze Elixir als ORM-Layer ueber sqlalchemy, und da kann man ein session.flush() ausfuehren, um inserts wirklich auszufuehren. Danach ist die ID verfuegbar. Ich habe mit dem Declarative-Mapper von SQLAlchemy keine wirkliche Erfahrung, aber der sollte sich aehnlich verhalten.
Und alle beide machen werden das hier benutzen:
http://www.sqlalchemy.org/docs/core/tut ... xpressions
Ach, was ist die SA-Dokumentation doch schlicht schoen. Muss nur lesen wollen

Re: SqlAlchemy erhaltener primary Key
Verfasst: Montag 14. März 2011, 21:49
von sprudel
Ich fürchte eben, bei mir wird einiges etwas anders sein, da ich nicht das direkte SQLAlchemy sondern SqlSoup als Aufsatz benutze.
Elixir ist auch ziemlich cool, aber für meine Anwendungszwecke brauche ich es eben etwas "roher"

Re: SqlAlchemy erhaltener primary Key
Verfasst: Montag 14. März 2011, 22:18
von deets
Was genau meinst du mit roher? Ich finde genau das sehr gelungen an Elixir - nett OO/ORM, aber wenn man will, ist man mit MeineEntity.eigenschaft direkt in der SQLAlchemy-Welt.
Wie dem auch sei, SqlSoup kenne ich nicht - aber wenn es "roher" ist, sollte es ja erst recht den Zugriff aus's result-Objekt erlauben.
Re: SqlAlchemy erhaltener primary Key
Verfasst: Mittwoch 16. März 2011, 07:32
von noisefloor
Hallo,
SqlSoup ist doch auch "nur" ein High-Level Layer über SQLAlchemy. Heißt: man kommt sich auch bei der Verwendung von SqlSoup an den "Last Insert Key".
Gruß, noisefloor
Re: SqlAlchemy erhaltener primary Key
Verfasst: Mittwoch 16. März 2011, 20:21
von sprudel
Gibt es denn eine Möglichkeit, irgendwie ein Autocommit zu erzwingen, so dass man sofort den erhaltenen Primärschlüssel bekommt?
Re: SqlAlchemy erhaltener primary Key
Verfasst: Mittwoch 16. März 2011, 22:15
von deets
Ah, das ist natuerlich ein Ding, ja... also, session.flush() sollte klappen. Aber das buendelt natuerlich eine Menge Statements. KA wie man dann genau an das kommt, was einen interessiert. Wie waer's mit Referenz auf das Resultset behalten, flushen + dann mal nachgucken?