Guten Abend zusammen,
Ich suche zurzeit eine Möglichkeit mit SQL Alchemy den letzten Wert von einem Auto increment Feld nach einem Insert zu bekommen.
Bei PHP Mysqli gibt es eine Funktion, "insert_id" die genau dies tut. Den letzten automatische Generierten Wert zurückgeben. Hier mal die Doku: http://php.net/manual/de/mysqli.insert-id.php
Gibt es so etwas auch in SQL Alchemy oder muss man selber die Query absetzen um diesen zu bekommen?
Letzte insert ID bekommen
@audacity363: Wozu brauchst Du das denn? Denn über solche automatisch generierten IDs würde ich so wenig wie möglich Annahmen machen. Also zum Beispiel *nicht* das die ohne Lücken vergeben werden. Noch nicht einmal das die grösste ID auch die letzte vergebene sein muss! Da stellt sich dann also die Frage wie Du das mit einer Abfrage lösen willst.
-
- User
- Beiträge: 83
- Registriert: Dienstag 6. August 2013, 18:59
@BlackJack da der Datensatz im Nachhinein weiterverarbeitet wird und dementsprechend aktualisiert wird brauche ich die ID um diesen zu aktualisieren.
@Sirius3 Du meinst also das man mit:
drauf zugreifen kann?
Bei der zweiten Möglichkeit sagt er mir dass er das Attribute nicht kennt:
@Sirius3 Du meinst also das man mit:
Code: Alles auswählen
table.c.id
# oder
table.id
Bei der zweiten Möglichkeit sagt er mir dass er das Attribute nicht kennt:
und beim ersten gibt er mir nur "tabellenname.id" aus.AttributeError: 'Table' object has no attribute 'id'
@audacity363: Nicht bei dem Tabellen-Objekt sondern bei dem Objekt das den Datensatz repräsentiert. Wie fügst Du die Werte denn konkret ein?
-
- User
- Beiträge: 83
- Registriert: Dienstag 6. August 2013, 18:59
Code: Alles auswählen
engine = create_engine("mysql://user:passwd@localhsot/database")
connection = engine.connect()
metadata = MetaData()
table = Table("test", metadata,
Column("id", Integer(), primary_key=True, autoincrement=True),
Column("feld1", String(20)),
Column("feld2", String(20)))
insertDic = {"feld1": "wert", "feld2": "wert"}
connection.execute(table.insert(insertDic))
@audacity363: Was bekommst Du denn ausgegeben wenn Du die letzte Zeile durch folgendes ersetzt:
Code: Alles auswählen
result = connection.execute(table.insert(insertDic))
print result.inserted_primary_key
-
- User
- Beiträge: 83
- Registriert: Dienstag 6. August 2013, 18:59
Ahh genau das habe ich gesucht. Danke.BlackJack hat geschrieben:@audacity363: Was bekommst Du denn ausgegeben wenn Du die letzte Zeile durch folgendes ersetzt:Code: Alles auswählen
result = connection.execute(table.insert(insertDic)) print result.inserted_primary_key