Sqlite INSERT Problem

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
ScooB
User
Beiträge: 54
Registriert: Donnerstag 28. April 2011, 10:47

Hi ich habe da ein kleines Problem

Code: Alles auswählen

con = sqlite3.connect("C:\Dev\DB\ktool_test.db3")
cur = con.cursor()
cur.execute("insert into Besch_Text(Besch_DE, Besch_EN, Zusatzinfo_DE, Zusatzinfo_EN) Values('TEST', 'test', 'tester', 'teeeest')")
con.commit()
lastid = cur.lastrowid
print lastid

cur.execute("insert into Aufbauart(ID_Besch_Text)  Values(?)", (lastid,))
#cur.execute("insert into Aufbauart(ID_Besch_Text)  Values('1')")
con.commit
lastid = cur.lastrowid
print lastid
cur.close()
con.close()
und zwar führt er mir den ersten Befehl aus allerdings nicht den zweiten
Aufbauart hat nur ID und ID_Besch_Text
über lastrowid ziegt der mir dann den Wert richtig an allerding fügt er es nicht hinzu

hab bestimmt wieder irgendwo nen kleinen Denkfehler
Danke & Gruß
ScooB
Zuletzt geändert von Anonymous am Montag 23. Mai 2011, 10:51, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@ScooB: Beim zweiten mal hast Du `commit` nicht aufgerufen.
ScooB
User
Beiträge: 54
Registriert: Donnerstag 28. April 2011, 10:47

@BlackJack: doch habe ich direkt danach con.commit
versteh ich das richtig das wenn ich execute() benutz immer nur ein statement benutzen kann und dann commiten muss
und bei executemany() mehrere durchführe und dann commite
lunar

@ScooB: Du hast zwar "con.commit" dastehen, aber das ist kein Aufruf. Dazu braucht es zwingend Klammern (e.g. "con.commit()")! Ohne Klammern ist das nur ein einfacher Attributzugriff, die Methode aber wird nicht aufgerufen, und folglich findet auch kein Commit statt.
ScooB
User
Beiträge: 54
Registriert: Donnerstag 28. April 2011, 10:47

@lunar: danke
ich bin so blöd so blöd so blöd boah ich könnt schon wieder in die Luft gehen das ist das blöde wenn man irgendwie den Kopf nicht frei bekommt
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Du solltest bei Pfadangaben auch besser raw-Strings nutzen:

Code: Alles auswählen

con = sqlite3.connect(r"C:\Dev\DB\ktool_test.db3")
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten