Na da hab ich ja was ins rollen gebracht. Vielen Dank schonmal für die Antworten und entschuldigt für die späte antwort. Wie ihr schon richtig erkannt habt, habe ich noch nicht soo viel Erfahrungen mit Datenbanken.
Ich habe jetzt für jeden Thread eigene Verbindungen aufgemacht, aber brauche wohl noch bis morgen um das weiter zu testen.
Meine Datenbank ist jetzt nicht übermäßig groß, aber in den verschiedenen Threads gibt es eben doch nicht nur Lesezugriffe, sondern teilweise auch Schreibzugriffe. SQLite sollte meinen Ansprüchen auf jeden Fall genügen.
Wie wichtig ist es eigentlich die Verbindungen wieder zu schließen? Weil ich bei mir Probleme habe diese zu schließen, da ich sie nicht ausversehen zu früh schließen möchte.
@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.
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...
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!