Paralleler Zugriff auf sqlite DB möglich?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Hallo,
kann ich parallel mit mehreren Prozessen auf ein sqlite-Datenbank-File zugreifen (Schreiben und Lesen)?
Habe leider immer noch Python23 und kann es deshalb nicht testen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ice2k3 hat geschrieben:Habe leider immer noch Python23 und kann es deshalb nicht testen.
PySQLite gibt es auch für Python 2.3. Aber die Antwort ist "nein", SQLite kommt mit parallelen writes generell nicht zurecht.
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Hab es jetzt mal selber getestet.
Funktioniert ja nur nicht, wenn der eine Prozess noch in einem COMMIT Block ist, solang kann man mit dem 2. Prozess halt nur Lesen und nicht schreiben.
Paralleles Öffnen und Lesen der Datei funktioniert ja.
Ich denk mal, dass das den Anforderungen genügt. Kann ja den Lock mit try abfangen und einfach die Abfrage noch einmal versuchen.
BlackJack

@Leonidas: Das stimmt so nicht. Problem ist nur das beim schreiben die ganze Datenbank gesperrt wird, das skaliert also sehr schlecht.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und dass SQLite viele ``fsync``-Aufrufe macht (Firefox 3 Alphas/Betas hatten das Problem), meine Vermutung ist dass Lodgeit gerade deswegen vor dem Umstieg auf Postgres manchmal so Probleme gemacht hat.
Antworten