Seite 1 von 1

einträge in datenbank mit loop löschen

Verfasst: Freitag 19. Februar 2016, 18:23
von DMD-OL
hi
wie kann man datenbankeinträge, die ich durch einen loop auslese, löschen?

Code: Alles auswählen

import sqlite3

SQL_Data = '%s\\Meine_Datenbank.db' %(Pfad_zur_Datenbank)
con = sqlite3.connect(SQL_Data)
cursor = con.cursor()
cursor.execute('''SELECT ktoNum,vorName,nachName,gebDat,pLz,wohnOrt,daTum,wochenTag FROM Meine_Datenbank WHERE ktoNum=?''', (ktoNum,))
aktuellesKonto = cursor.fetchall()
with con:
for kOnto in aktuellesKonto:
	print kOnto
	#cursor = con.cursor()
	#cursor.execute('''DELETE FROM Meine_Datenbank WHERE ktoNum=?''', (ktoNum,))
	#con.commit()
con.close()

Re: einträge in datenbank mit loop löschen

Verfasst: Freitag 19. Februar 2016, 18:33
von BlackJack
@DMD-OL: In dem man sich auch den Primärschlüssel geben lässt und den dann beim Löschen als Bedingung im SQL angibt. Wobei das beim gegeben Beispiel natürlich unnötig umständlich ist, denn da könnte man die Datenbank auch alles auf einen Schlag löschen lassen, statt jeden Datensatz noch mal durch das Programm zu schleusen.

Der Quelltext ist falsch eingerückt (`IndentationError`) und wenn man ``with`` verwendet, braucht man auf dem Objekt nicht mehr `close()` aufrufen. Allerdings sollte man den Cursor vorher schliessen. Das kann sonst zu einem Fehler führen.

Die Schreibweisen von dem Spaltennamen sind übrigens abenteuerlich. Zudem ist die Situation bei Gross/-kleinschreibung bei SQL etwas heikel — eigentlich gibt es den Unterschied nicht, aber einige DBMS machen trotzdem Unterschiede, entweder generell, oder wenn gequotet wird, oder es ist von der Konfiguration abhängig. Unterm Strich sollte man sich besser auf Kleinbuchstaben beschränken. `vorName` und `nachName` machen so auch keinen Sinn, denn das ist im Deutschen jeweils *ein* Wort. Und bei `daTum` wird's schräg.

Re: einträge in datenbank mit loop löschen

Verfasst: Freitag 19. Februar 2016, 18:38
von DMD-OL
check, danke

Re: einträge in datenbank mit loop löschen

Verfasst: Dienstag 29. November 2016, 11:07
von christylogu