einträge in datenbank mit loop löschen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

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()
Zuletzt geändert von Anonymous am Dienstag 29. November 2016, 11:09, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
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.
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

check, danke
Antworten