Einige Fragen zu SQLite

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
heiliga horsd

Also, mit den Fragezeichen funktioniert es nun (danke für die Links, werde ich mir nochmal durchlesen).

Leider bekomme ich nachdem die Datenbank 64kb groß ist folgende Fehlermeldung:
cursor.execute(sql, list(map(urllib.parse.unquote_plus, line.split(','))))
sqlite3.OperationalError: unable to open database file
Hier nochmal der Quelltext:
http://paste.pocoo.org/show/179205/
heiliga horsd

Erstmal sorry für meine Doppelposts :oops:

So sieht es also jetzt aus:
http://paste.pocoo.org/show/179227/

Ich bekomme aber immer noch teilweise Fehlermeldungen, zum Teil, dass der Primary Key eindeutig sein muss (wenn ich dann das Programm ein zweites mal starte funktioniert es) und dass die Datenbank gesperrt ist (obwohl ich die Verbindung doch eigentlich getrennt habe) - wenn ich dann Python neu starte läuft hier auch wieder alles astrein.

Kann mir das jemand erklären warum sich das so verhält?
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Hier ein paar Tipps:
- Du solltest die Verbindung in einem try..finally Block schließen.
- Es gibt ``str.splitlines()``
- Normalerweise sollte man nie die allg. ``Exception`` abfangen, sondern immer die konkrete
- Eine Lösung mit ``executemany`` wäre vermutlich eine schnellere Alternative.

BTW: Wie sieht denn die Datei aus? Am besten mal ein paar Zeilen posten.
heiliga horsd

Danke für deine Antwort!
ice2k3 hat geschrieben:Hier ein paar Tipps:
- Du solltest die Verbindung in einem try..finally Block schließen.
Wie meinst du? Also das ganze Programm in einen try-Block setzen oder wie?
ice2k3 hat geschrieben:- Es gibt ``str.splitlines()``
Wozu ist das gut?
ice2k3 hat geschrieben: - Normalerweise sollte man nie die allg. ``Exception`` abfangen, sondern immer die konkrete
Danke für den Hinweis.
ice2k3 hat geschrieben: - Eine Lösung mit ``executemany`` wäre vermutlich eine schnellere Alternative.
Wo ist der Unterschied zu execute?
ice2k3 hat geschrieben: BTW: Wie sieht denn die Datei aus? Am besten mal ein paar Zeilen posten.
http://paste.pocoo.org/show/179227/
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

heiliga horsd hat geschrieben:
ice2k3 hat geschrieben:Hier ein paar Tipps:
- Du solltest die Verbindung in einem try..finally Block schließen.
Wie meinst du? Also das ganze Programm in einen try-Block setzen oder wie?
Den Teil nach dem Öffnen der Verbindung und das Schließen dann ins finally.
heiliga horsd hat geschrieben:
ice2k3 hat geschrieben:- Es gibt ``str.splitlines()``
Wozu ist das gut?
Zeilenumbrüche sind nicht immer "\n", zum Teil gibt es auch "\r\n" oder ähnliches.
heiliga horsd hat geschrieben:
ice2k3 hat geschrieben: - Eine Lösung mit ``executemany`` wäre vermutlich eine schnellere Alternative.
Wo ist der Unterschied zu execute?
Das steht in der Doku...
heiliga horsd hat geschrieben:
ice2k3 hat geschrieben: BTW: Wie sieht denn die Datei aus? Am besten mal ein paar Zeilen posten.
http://paste.pocoo.org/show/179227/
Ich meine eigentlich die Textdatei, die du einliest...
heiliga horsd

OK danke dir, das mit den Umbrüchen wusst ich nicht, das executemany hab ich in der doku gelesen aber den Sinn nicht ganz verstanden... :(

Die Textdatei bekommst du hier als gzip-Archiv:
http://de48.die-staemme.de/map/player.txt.gz
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Schau dir mal csv.DictReader() an.
heiliga horsd

mkesper hat geschrieben:Schau dir mal csv.DictReader() an.
Entschuldige, aber ich verstehe nicht was du damit meinst? Das auslesen funktioniert in der jetzigen Form ja problemlos! Kannst du mir ein wenig näher erläutern, was du mit csv.DictReader meinst?
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Ah, sorry, du wolltest ja sqlite ausprobieren. Ansonsten würde dir evtl. ein Dictionary reichen. Jedoch würde ich immer das csv-Modul verwenden statt die Datei selbst zu zersägen. Aber das ist wohl Geschmackssache.
Antworten