IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Défaut de Mémoire pour la lecture d'un grand fichier


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Par défaut Défaut de Mémoire pour la lecture d'un grand fichier
    Bonjour à tous,

    J'utilise ce code pour charger des bases de données mysql.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
     
     def exec_sql_file(self, user, password, port, host, sql_file):
            cnx = mysql.connector.connect(user=user, password=password, port=port,
                                          host=host)
            print
            "************ Chargement de la base En cours... *********************"
            cursor = cnx.cursor()
     
            queries = []
            delimiter = ';'
            query = ''
            with open(sql_file, 'r') as f:
                for line in f:
                    line = line.strip()
                    if line.startswith('DELIMITER'):
                        delimiter = line[10:]
                    else:
                        query += line + '\n'
                        if line.endswith(delimiter):
                            # Get rid of the delimiter, remove any blank lines and add this query to our list
                            queries.append(query.strip().strip(delimiter))
                            query = ''
     
            for query in queries:
                if not query.strip():
                    continue
                try:
                    # print("\n\n [DEBUG] Executing SQL statement:\n%s" % (statement))
                    # print (statement)
                    #print ("Query: " +query)
                    cursor.execute(query)
                except:
                    print
                    "[MYSQLERROR] Erreur lors de chargement de la base ****"
            cursor.close()
            cnx.commit()
            cnx.close()
    Cependant, pour les grandes fichiers sql j'ai eu cet erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     queries.append(query.strip().strip(delimiter))
    MemoryError
    Pourtant j'ai essayé d'éviter les instructions file.readlines() qui lit l'ensemble du fichier.

    Merci d'avnce

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 742
    Par défaut
    Salut,

    Citation Envoyé par fraisa1985 Voir le message
    Pourtant j'ai essayé d'éviter les instructions file.readlines() qui lit l'ensemble du fichier.
    Quelle est la taille du fichier?
    Essayez d'exécuter vos queries au fur et à mesure (plutôt que de construire une liste de queries avant).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Les freewares pour la lecture de fichiers multimédias
    Par Michaël dans le forum Autres Logiciels
    Réponses: 42
    Dernier message: 01/01/2020, 18h56
  2. temps de lecture d'un grand fichier
    Par nadir CoCo dans le forum C++
    Réponses: 12
    Dernier message: 16/07/2012, 15h44
  3. Réponses: 1
    Dernier message: 25/02/2012, 15h45
  4. Réponses: 12
    Dernier message: 27/03/2008, 22h01
  5. Economie de mémoire pour plusieur images avec la même source
    Par neness dans le forum Composants VCL
    Réponses: 5
    Dernier message: 18/01/2004, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo