Löschen von Tabellen einer SQlite DB

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Ich betreibe eine SQlite DB mit mehreren Tabellen und tausenden Zeilen, die regelmäßig, 1 mal jährlich durch Import mehrerer CSV-Tabelle aktualisiert werden müssen. Da dies durch Computer-Leien gemacht werden soll, muss vor dem Ladevorgang die jeweils zu aktualisierende Tabelle gelöscht werden. Leider konnte ich nirgendwo finden, wie das korrekt in Python zu bewerkstelligen ist

Meine Lade-Funktion sieht z.Zt. folgendermaßen aus:

Code: Alles auswählen

from PyQt4 import QtCore, QtGui
from PyQt4.QtCore import *
from PyQt4.QtGui import *

global conn,db_curs

dbname = "/home/klaus/AFM/Daten/AFM_DB.sdb3"
conn = sqlite3.connect(dbname)
db_curs = conn.cursor()

#========================= WICHTIG WICHTIG WICHTIG ====================================================================
# Wenn Datenbank Tabelle nicht geladen werden soll, die nächsten Zeile mit # am Anfang der Zeile auskomentieren !!
#======================================================================================================================
db_curs.execute("""CREATE TABLE nielsen_lst (Artikel TEXT, Bezeichnung TEXT, INT, Preis FLOAT, Rahmenzuschlag FLOAT, Reserve)""")
db_curs.execute("""CREATE TABLE nielsen_wr  (Artikel TEXT, Bezeichnung TEXT, INT, Preis FLOAT, Breite FLOAT, Hoehe FLOAT)""")
db_curs.execute("""CREATE TABLE nielsen_zb  (Artikel TEXT, Bezeichnung TEXT, INT, Preis FLOAT)""")
  
Den Kommentar würde ich gerne durch entsptrechende DELETE Funktionen erstezen. Trotz intensiever Suche habe ich nichts geeignetes gefunden und alle Varianten der DELETE-Funktionen wurden nicht akzeptiert.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
BlackJack

@klaus66: Erst mal sollten wir vielleicht klären was Du machen möchtest. Tabellen löschen, oder (alle) Datensätze *in* Tabellen löschen? Ersteres geht mit DROP, letzteres mit DELETE.

Wo hast Du denn intensiv gesucht? In der Dokumentation von SQLite? Wenn man sich dort die Seite zu DELETE durchliest, sollte eigentlich klar sein, was man machen muss um alle Datensätze in einer Tabelle zu löschen.
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Ich muss alle Datensätze der (im Beispiel 3 Tabellen) durch neue Daten ersetzen. Dies geht meines Erachtens am einfachsten durch Löschen und neu Anlegen der Tabellen. Zumal die Längen der neuen Tabellen nicht mit den Längen der alten übereinstimmen müssen. Die DELETE Funktion habe ich zwar irgendwo gefunden, nur kein Beispiel wie diese genau angewendet werden muss. Alle meine Versuche eine der Tabellen mit DELETE zu löschen führten lediglich zu Fehlern.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
BlackJack

@klaus66: Ein Beispiel zum löschen von Tabellen mit DELETE wirst Du nicht finden. Das geht damit nicht. Nochmal: Du suchst DROP.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

klaus66 hat geschrieben:Ich muss alle Datensätze der (im Beispiel 3 Tabellen) durch neue Daten ersetzen. Dies geht meines Erachtens am einfachsten durch Löschen und neu Anlegen der Tabellen.
Für mich ist das wie mit Kanonen auf Spatzen zu schießen. Ein "DELETE FROM <tabelle" ohne WHERE-Bedingung oder ein "TRUNCATE <tabelle>" erledigt das was du möchtest.

Das hat jetzt auch nichts damit zu tun "wie das in Python zu bewerkstelligen ist", das sind SQL-Grundlagen.
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

BlackJack hat geschrieben:@klaus66: Ein Beispiel zum löschen von Tabellen mit DELETE wirst Du nicht finden. Das geht damit nicht. Nochmal: Du suchst DROP.
Du hast ja Recht, jetzt klappt es auch! Danke
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

klaus66 hat geschrieben:Du hast ja Recht, jetzt klappt es auch!
Und irgendwann nimmt man mal ein "ordentliches" Datenbanksystem und wundert sich warum das auf einmal nicht mehr geht.
Antworten