der beste Weg, um SQLite db cur und con zu schließen, wenn Daten in SQLite mit Pipelines geschrieben werden

7

quotes.py ist die Spider-Datei.

%Vor%

Der Autor und das Zitat auf jeder Seite wurden in Element extrahiert.

Mit der folgenden Pipelines.py können Element ['author'] und Element ['quote'] in /tmp/test.sqlite geschrieben werden.

%Vor%

Es gibt ein kleines Manko beim Ausführen von sipder scrapy crawl quotes , der temporären sqlite Datei test.sqllite-journal wird immer geöffnet und geschlossen, geöffnet und wird kontinuierlich geschlossen, wenn das Verzeichnis /tmp während der Laufzeit der Spinne geöffnet wird.
Ich möchte einen besseren Weg, um die Aufgabe zu erledigen 1. nicht nach jedem Gegenstand zu begehen?
2.open sqlite nur einmal um alle Daten zu schreiben und dann zu schließen.

    
it_is_a_literature 07.09.2017, 02:38
quelle

1 Antwort

4

Persönlich sehe ich nichts falsches mit Ihrem richtigen Ansatz, nach jedem Gegenstand zu handeln. Commit sollte die logische Arbeitseinheit schließen (und Rollback auf der anderen Seite sollte sie im Falle eines Fehlers verwerfen). Scraped Items sind in meinen Augen unabhängig und können als logische Einheiten betrachtet werden, so dass Commit legitim ist. (Ich würde sogar sagen, dass es erwünscht ist, da es Datenverlust im Falle von unerwarteten Fehlern verhindert.)

Sicher, Sie können es auch so machen, wie Sie es vorschlagen, und alle Daten einmal am Ende speichern. Aber dafür müssen Sie sie zwischenzeitlich im Speicher ablegen und je nach Größe und Anzahl der Objekte kann das eine Menge Daten sein. Sie können jedoch eine Kompromittierung auswählen und einen Puffer mit bekannter Größe und Commit-Elementen verwenden, wenn der Puffer voll ist. Sehen Sie sich dieses Beispiel Ihrer modifizierten Pipeline-Klasse an:

%Vor%

Die Puffergröße ist auf 20 Elemente festgelegt, sodass sie nach jeweils 20 Elementen in der Datenbank festgeschrieben werden. Am besten speichern Sie solche Einstellungen (zusammen mit dem Datenbanknamen usw.) in settings.py though.

    
Tomáš Linhart 13.09.2017, 07:33
quelle

Tags und Links