Seite 2 von 2

Re: SQLite - Database is locked/Speicherzugriffsfehler

Verfasst: Freitag 21. September 2012, 17:49
von lunar
@Trubinial Guru Verwende doch am besten SQLAlchemy, denn diese Bibliothek nimmt Dir das sogenannte "Connection pooling" ab, also das Erzeugen und Vorhalten von Datenbankverbindungen, die Zuweisung derselben an Threads, und das schlussendliche Schließen. Den Rest dieser Bibliothek musst Du je erst mal nicht verwenden, es reicht erst mal, wenn Du Deine Datenbankverbindungen über SQLAlchemy aufbaust.

Das ordentliche Schließen von Datenbankverbindungen ist wichtig. Ansonsten kann es geschehen, dass Transaktionen nicht abgeschlossen werden, und Daten somit nicht in die Datenbank geschrieben werden.

Re: SQLite - Database is locked/Speicherzugriffsfehler

Verfasst: Freitag 21. September 2012, 20:11
von noisefloor
Hallo,
Wie wichtig ist es eigentlich die Verbindungen wieder zu schließen?
Wichtig, weil dir bei jeder DB sonst irgendwann die Verbindungen ausgehen - und dann hängt die Applikation oder wirft einen Fehler.

Die Punkte 5 und 6 der SQLite FAQs erklären das für SQLite ganz gut.

SQLAlchemy ist unter Python in Kombination mit relationalen Datenbanken aber immer ein guter Tipp, siehe Lunars Posting.

Gruß, noisefloor

Re: SQLite - Database is locked/Speicherzugriffsfehler

Verfasst: Freitag 21. September 2012, 21:00
von Hyperion
Leonidas hat geschrieben: * Außer natürlich ihr seit jetzt fiese Appleianer oder Android-Fanboys, denn das einzige richtige OS is natürlich Firefox OS. SCNR
Am besten ist natürlich das OS des C64. Stürzt das mal ab, so ist es nach <1 Sek wiederhergestellt!!! Da können diese neumodischen mobilen Beschäftigungstherapiesysteme einfach nicht mithalten... :twisted:

Re: SQLite - Database is locked/Speicherzugriffsfehler

Verfasst: Mittwoch 26. September 2012, 19:24
von Trubinial Guru
Tausend Dank für den sqlalchemy Tipp. Schade dass ich nicht schon vorher Wind davon bekommen habe. Nach dem Umstieg auf sqlalchemy und einigem testen scheint alles wunderbar zu funktionieren.

Das einzige Problem ist nun, dass zwei Threads, die eigentlich nur im Hintergrund arbeiten und deren Datenbank-Zugriffe keine Priorität haben sollten, manchmal die Verbindungen blockieren und der Hauptprozess auf das Beenden der Verbindung im Thread warten muss. Gibt es da eine einfache Möglichkeit, dass die Verbindungen der Threads benachteiligt werden und nur dann laufen, wenn gerade kein anderer Verbindungs-Versuch läuft?

Ich bin in der Dokumentation den Teil über Connection Pooling durchgegangen, blicke aber irgendwie nicht ganz durch.
Vielen Dank nochmal!