[PYTHON] So erhalten Sie mit SQLAlchemy + MySQLdb mehr als 1000 Daten

In einem bestimmten Programm

Ich habe den folgenden Code geschrieben, um ungefähr 1500 Daten in einer bestimmten Tabelle auszuwählen, aber aus irgendeinem Grund konnte ich nur 1000 erhalten.

sample_before.py


from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base

schema = 'mysql://user_id:password@localhost/sample'
engine = create_engine(schema, echo=False, encoding='utf-8')
Base = declarative_base(engine)

class Model(Base):
    __tablename__ = 'sample'
    __table_args__ = {'autoload': True}

    def __repr__(self):
        return "<sample class>"

Session = sessionmaker(bind=engine)()
records = Session.query(Model)

print "RECORDS: %d" % records.count()
for record in records:
    print 'ID: %d, NAME:%s, ADDRESS:%s, BIRTHDAY:%s'

Wenn ich den obigen Code ausführe, wird `records.count ()` 1000. Ich habe noch nie mehr als 1000 Daten manipuliert, also habe ich sie untersucht.

Zuallererst ist die Umgebung, die ich benutze, wie folgt.

Middleware im Zusammenhang

Python im Zusammenhang

Ursache

Als Ergebnis der Untersuchung wurde festgestellt, dass sich der Standardcursor von MySQLdb auf der lokalen Programmseite befindet, wodurch ein Limit festgelegt wird.

Gegenmaßnahmen

Da es so aussieht, als ob ich den Cursor auf der Serverseite haben sollte, habe ich den Code wie folgt geändert.

sample_after.py


from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base

import MySQLdb.cursors

schema = 'mysql://user_id:password@localhost/sample'
engine = create_engine(schema, echo=False, encoding='utf-8', 
                       connect_args={'cursorclass': MySQLdb.cursors.SSCursor})
Base = declarative_base(engine)

class Model(Base):
    __tablename__ = 'sample'
    __table_args__ = {'autoload': True}

    def __repr__(self):
        return "<sample class>"

conn = engine.connect()
Session = sessionmaker(bind=conn)()
records = Session.query(Model)

print "RECORDS: %d" % records.count()
for record in records:
    print 'ID: %d, NAME:%s, ADDRESS:%s, BIRTHDAY:%s'

Maßnahmenpunkte

abschließend

Was passiert, wenn ich einen anderen MySQL-Treiber (MariaDB) verwende? Ich weiß es nicht, weil ich es nicht untersucht habe, aber ich denke, es wird funktionieren, wenn ich es mit connect_args einstelle.

Wenn jemand einen anderen guten Weg kennt, lass es mich wissen.

Recommended Posts

So erhalten Sie mit SQLAlchemy + MySQLdb mehr als 1000 Daten
Wie aktualisiere ich mit SQLAlchemy?
Wie mit SQLAlchemy ändern?
Wie lösche ich mit SQLAlchemy?
Umgang mit unausgeglichenen Daten
Wie fange ich mit Scrapy an?
Erste Schritte mit Python
Wie fange ich mit Django an?
Aufblasen von Daten (Datenerweiterung) mit PyTorch
So verbinden Sie INNER mit SQL Alchemy
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
[Python] So erhalten Sie mit Enum einen Wert mit einem anderen Schlüssel als dem Wert
Wie man Problemdaten mit Paiza liest
Verwendung von SQLAlchemy / Connect mit aiomysql
[Django] So erhalten Sie Daten durch Angabe von SQL.
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
So kratzen Sie Pferderenndaten mit Beautiful Soup
So erhalten Sie Artikeldaten mithilfe der Qiita-API
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Verwendung von xgboost: Mehrklassenklassifizierung mit Irisdaten
So kratzen Sie Bilddaten von Flickr mit Python
So erhalten Sie einen angemeldeten Benutzer mit Djangos forms.py
So konvertieren Sie horizontal gehaltene Daten mit Pandas in vertikal gehaltene Daten
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
Wie man mit Python-Flüchen ein Urteil über das Mausrad erhält
So extrahieren Sie mit Pandas Daten, denen der Wert nan nicht fehlt
Holen Sie sich die Tabelle dynamisch mit sqlalchemy
Holen Sie sich Youtube-Daten mit Python
Einführung in RDB mit sqlalchemy Ⅰ
Wie man mit Theano besetzt
So trennen Sie Zeichenfolgen mit ','
Wie man RDP auf Fedora31 macht
Umgang mit Datenrahmen
So extrahieren Sie mit Numpy einen anderen als einen bestimmten Index
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
Versuchen Sie, Daten zu erfassen, während Sie mit anaconda eine Portweiterleitung an RDS durchführen.
So erhalten Sie einen Überblick über Ihre Daten in Pandas
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
So brechen Sie RT mit tweepy ab
So extrahieren Sie Funktionen von Zeitreihendaten mit PySpark Basics
[Python] Wie man MP3-Daten fFT
Umgang mit Sitzungen in SQLAlchemy
Python: So verwenden Sie Async mit
Link, um mit Python zu beginnen
Lesen von e-Stat-Subregionsdaten
Stellen Sie mit SQL Alchemy eine Verbindung zu mehreren Datenbanken her
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy
So verwenden Sie virtualenv mit PowerShell
So installieren Sie Python-Pip mit Ubuntu20.04LTS
So erhalten Sie die Python-Version
Einführung in RDB mit sqlalchemy II
So erhalten Sie den gesamten Datenverkehr über VPN mit OpenVPN unter Linux
Umgang mit dem DistributionNotFound-Fehler
So berechnen Sie das Datum mit Python
So installieren Sie den MySQL-Connector mit pip3
Versuchen Sie, CloudWatch-Metriken mit der Python-Datenquelle re: dash abzurufen
Süchtig nach Zeichencode durch Einfügen und Extrahieren von Daten mit SQL Alchemy