Ich habe ein Python-Programm, das das "Threading" -Modul verwendet. Einmal pro Sekunde startet mein Programm einen neuen Thread, der einige Daten aus dem Web abruft und diese Daten auf meiner Festplatte speichert. Ich möchte sqlite3 verwenden, um diese Ergebnisse zu speichern, aber ich kann es nicht zum Laufen bringen. Das Problem scheint in der folgenden Zeile zu liegen:
conn = sqlite3.connect("mydatabase.db")
- Wenn ich diese Codezeile in jeden Thread einfüge, wird ein OperationalError angezeigt, der mir mitteilt, dass die Datenbankdatei gesperrt ist. Ich denke, dies bedeutet, dass ein anderer Thread mydatabase.db über eine sqlite3-Verbindung geöffnet und gesperrt hat.
- Wenn ich diese Codezeile in das Hauptprogramm einfüge und das Verbindungsobjekt (conn) an jeden Thread übergebe, erhalte ich einen Programmierfehler, der besagt, dass in einem Thread erstellte SQLite-Objekte nur in demselben Thread verwendet werden können.
Zuvor habe ich alle meine Ergebnisse in CSV-Dateien gespeichert und hatte keine dieser Probleme beim Sperren von Dateien. Hoffentlich wird dies mit SQLite möglich sein. Irgendwelche Ideen?