[PYTHON] Über das Verhalten von Yield_per von SqlAlchemy

SqlAlchemy Yield_per-Methode

Ist es find_in_batches in Rails? Es ist eine nette Methode, die eine große Datenmenge nacheinander verarbeitet, ohne alle Ergebnisse im Speicher zu speichern.

Wenn Sie der Meinung sind, dass es sich um eine Methode handelt, die Grenzwerte und Offsets gut handhabt, ist es eine Methode, die das ausgewählte Ergebnis als Stream ohne so etwas verarbeitet.

Als ich mir das SQL-Protokoll ansah, dachte ich, dass es neben mir noch andere Leute geben würde, die befürchten, dass SQL nicht wie erwartet herauskommt, also werde ich es mir notieren.

Wie man Memo nur für den Fall verwendet

yield_per.sample.py


sess = Session(engine)
for obj in sess.query(Customer).filter_by(ownd_uid = n).yield_per(10):
   hogehoge(obj)

Wenn Sie es so schreiben, wird es verarbeitet, während unter der Filterbedingung viele Datensätze ausgewählt sind, während 10 Datensätze gleichzeitig ausgewählt werden, sodass alle ausgewählten Ergebnisse nacheinander verarbeitet werden, ohne im Speicher gespeichert zu werden.

Es ist das Beste.

Oh? Verwenden Sie N Verbindungen?

Wenn Sie versuchen, processlist unter MySQL anzuzeigen, scheint jede vonield_per aufgerufene Verbindung eine Verbindung zu haben. Ist das so, wenn du fragst?

screen 2016-11-06 12.16.41.png

Die erste Schleife, die 945 Sekunden dauert, ist die oberste Schleife, aber ich frage mich, ob sie durch connect_timeout unterbrochen werden kann. (Ich habe das Gefühl, es wird ausgehen)

Wenn Sie nicht so viele Daten verwenden, können Sie diese möglicherweise nicht sehen. Wenn Sie also eine Fehlermeldung erhalten, notieren Sie sich die Verwendung.

Ergebnis: Kein Verbindungsfehler.

Es dauerte 1-2 Stunden, endete aber ohne Probleme.

Wenn Sie eine lange Verbindung haben, können Sie die Liste der Showprozesse möglicherweise nicht abfragen. !!

Bitte untersuchen Sie auf jeden Fall das Verhalten der Verarbeitung auf der MySQL-Seite!

Recommended Posts

Über das Verhalten von Yield_per von SqlAlchemy
Informationen zum Verhalten von enable_backprop von Chainer v2
Über das Verhalten von copy, deepcopy und numpy.copy
Informationen zum Verhalten der Warteschlange während der Parallelverarbeitung
Über die Komponenten von Luigi
Über die Funktionen von Python
Über den Rückgabewert von pthread_mutex_init ()
Ein Hinweis zum Verhalten von bowtie2 bei mehreren Treffern
Über den Rückgabewert des Histogramms.
Über die Obergrenze von Threads-max
Über die Größe der Punkte in Matplotlib
Informationen zur Grundlagenliste der Python-Grundlagen
Überprüfen Sie das Verhalten des Zerstörers in Python
Informationen zur virtuellen Umgebung von Python Version 3.7
Über die Argumente der Setup-Funktion von PyCaret
Über den Test
Verhalten von multiprocessing.pool.Pool.map
Ich wollte vorsichtig mit dem Verhalten der Standardargumente von Python sein
Über die Warteschlange
Informationen zur Genauigkeit der Berechnungsmethode für das Umfangsverhältnis von Archimedes
Informationen zur X-Achsen-Notation des Balkendiagramms von Matplotlib
Über die Verarbeitungsgeschwindigkeit von SVM (SVC) von Scikit-Learn
Das Verhalten von signal () hängt von der Kompilierungsoption ab
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Über die Entwicklungsinhalte des maschinellen Lernens (Beispiel)
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
Visualisieren Sie das Verhalten des Sortieralgorithmus mit matplotlib
Der Beginn von cif2cell
Ein Memorandum über Warnungen in Pylint-Ausgabeergebnissen
Über alles von numpy
Die Bedeutung des Selbst
Über die Zuweisung von numpy.ndarray
[Python] Verhalten von Argmax
der Zen von Python
Denken Sie an das Rack und WSGI der nächsten Generation
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Über die Ineffizienz der Datenübertragung im luigi on-memory
Grundlegende Verwendung von SQL Alchemy
Die Geschichte von sys.path.append ()
Untersuchen Sie die genaue Verarbeitung des Python-Datasets (SQLAlchemy-Wrapper).
Informationen zur Entfaltungsfunktion
Über den Servicebefehl
Über die übersichtliche Anordnung in der Importreihenfolge von Flake8
Eine Geschichte über die Änderung des Master-Namens von BlueZ
Über Variable von Chainer
Über die Verwirrungsmatrix
Über das Besuchermuster
Persönliche Hinweise zur Integration von vscode und anaconda
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Rache der Typen: Rache der Typen
Hinweis zum Standardverhalten von collate_fn in PyTorch
Denken Sie an die Analyseumgebung (Teil 1: Übersicht) * Stand Januar 2017
Informationen zum Kamerawechselereignis der Google Maps Android API
Ich habe ein wenig versucht, das Verhalten der Zip-Funktion