[PYTHON] Comment obtenir plus de 1000 données avec SQLAlchemy + MySQLdb

Dans un certain programme

J'ai écrit le code suivant pour SELECT environ 1500 données dans une certaine table, mais pour une raison quelconque, je ne pouvais en obtenir que 1000.

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'

Lorsque j'exécute le code ci-dessus, records.count () '' devient 1000. Je n'avais jamais manipulé plus de 1000 données auparavant, alors je les ai étudiées.

Tout d'abord, l'environnement que j'utilise est le suivant.

Relatif au middleware

Lié à Python

Cause

À la suite de l'enquête, il a été constaté que le curseur par défaut de MySQLdb se trouve du côté du programme local, ce qui impose une limite.

Contre-mesures

Puisqu'il semble que je devrais avoir le curseur côté serveur, j'ai modifié le code comme suit.

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'

Points de mesures

en conclusion

Je ne sais pas ce qui se passe si j'utilise un autre pilote de MySQL (MariaDB)? Je ne sais pas, mais je pense que cela fonctionnera si je le configure avec connect_args.

Si quelqu'un connaît un autre bon moyen, faites-le moi savoir.

Recommended Posts

Comment obtenir plus de 1000 données avec SQLAlchemy + MySQLdb
Comment mettre à jour avec SQLAlchemy?
Comment modifier avec SQLAlchemy?
Comment supprimer avec SQLAlchemy?
Comment gérer les données déséquilibrées
Comment démarrer avec Scrapy
Comment démarrer avec Python
Comment démarrer avec Django
Comment augmenter les données avec PyTorch
Comment INNER JOIN avec SQL Alchemy
[Introduction à Python] Comment obtenir des données avec la fonction listdir
[Python] Comment obtenir une valeur avec une clé autre que value avec Enum
Comment lire les données de problème avec Paiza
Comment utiliser SQLAlchemy / Connect avec aiomysql
[Django] Comment obtenir des données en spécifiant SQL.
J'ai essayé d'obtenir des données CloudWatch avec Python
Comment récupérer des données de courses de chevaux avec Beautiful Soup
Comment obtenir des données d'article à l'aide de l'API Qiita
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Comment utiliser xgboost: classification multi-classes avec des données d'iris
Comment récupérer des données d'image de Flickr avec Python
Comment obtenir un utilisateur connecté avec les forms.py de Django
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Comment obtenir le verdict de la molette de la souris avec des malédictions Python
Comment extraire des données qui ne manquent pas de valeur nan avec des pandas
Obtenez la table dynamiquement avec sqlalchemy
Obtenez des données Youtube avec python
Introduction à RDB avec sqlalchemy Ⅰ
Comment lancer avec Theano
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment gérer les trames de données
Comment extraire un index autre qu'un index spécifique avec Numpy
Comment entrer dans l'environnement de développement Python avec Vagrant
Essayez d'acquérir des données lors de la redirection de port vers RDS avec anaconda.
Comment obtenir un aperçu de vos données dans Pandas
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
Comment annuler RT avec Tweepy
Comment extraire des fonctionnalités de données de séries chronologiques avec les bases de PySpark
[Python] Comment FFT des données mp3
Comment gérer une session dans SQLAlchemy
Python: comment utiliser async avec
Lien pour commencer avec python
Comment lire les données de la sous-région e-Stat
Connectez-vous à plusieurs bases de données avec SQL Alchemy
Comment obtenir l'ID de Type2Tag NXP NTAG213 avec nfcpy
Pour utiliser virtualenv avec PowerShell
Comment installer python-pip avec ubuntu20.04LTS
Comment obtenir la version Python
Introduction à RDB avec sqlalchemy II
Comment obtenir tout le trafic via VPN avec OpenVPN sous Linux
Comment gérer l'erreur DistributionNotFound
Comment calculer la date avec python
Comment installer mysql-connector avec pip3
Essayez d'obtenir des métriques CloudWatch avec la source de données python re: dash
Accro au code de caractère en insérant et en extrayant des données avec SQL Alchemy