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