Bonjour à tous,

J'ai utilisé ce code python pour créer une base Mysql en utilisant un fichier sql comme fichier d'entrée.

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
 
 
#utf8
import mysql.connector
import sys
import re
 
class CreateDatabase:
    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()
        statement = ""
        for line in open(sql_file):
            if re.match(r'--', line):  # ignore sql comment lines
                continue
            if not re.search(r'[^-;]+;', line):  # keep appending lines that don't end in ';'
                statement = statement + line
            else:  # when you get a line ending in ';' then exec statement and reset for next statement
                statement = statement + line
                # print "\n\n[DEBUG] Executing SQL statement:\n%s" % (statement)
                try:
                    cursor.execute(statement)
                except :
                    print
                    "[MYSQLERROR] Erreur lors de chargement de la base ****"
                statement = ""
        cursor.close()
        cnx.commit()
        cnx.close()
 
if __name__=="__main__":
    CDB=CreateDatabase()
    CDB.exec_sql_file(r"root",r"xxx",r"3306",r"localhost",r"C:\Users\xxx\patch_creation_DB.sql")
Le code tourne sans aucune exception mais je m'es rendu compte qu'il ne fait pas l'insertion de quelques données dans une des tables de la base.

Sachant que j'ai des contraintes techniques m'exigeant d'utiliser la version python 2.7 et seulement l'api Mysql.connector.

Avez-vous une idée sur les raisons de ce souci et éventuellement si vous avez des recommandations pour régler ce souci svp.

Merci beaucoup d'avance !