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

Bibliothèques tierces Python Discussion :

Lancer un script sql dans un fichier *.sql


Sujet :

Bibliothèques tierces Python

  1. #1
    Débutant
    Inscrit en
    Juin 2007
    Messages
    453
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 453
    Points : 97
    Points
    97
    Par défaut Lancer un script sql dans un fichier *.sql
    Bonjour à tous,

    J'ai essayé de lancer un script .sql via la classe suivante mais toujours en vain !

    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
    39
    40
    41
     
    # encoding=utf8
    import sys
    import mysql.connector
    import re
     
    class ExecuteSqlFile:
     
        def ExecuteSQl(self,filename,user, password, port, host):
            reload(sys)
            sys.setdefaultencoding('utf8')
            f = open(filename, 'r')
     
            cnx = mysql.connector.connect(user=user, password=password, port=port,
                                          host=host)
            cursor = cnx.cursor()
            query = " ".join(f.readlines())
            query1= self.remove_comments(query)
            for result in cursor.execute(query1, multi=True):
                pass
            cnx.commit()
            cnx.close()
            cnx.disconnect()
     
        def remove_comments(self,string):
            pattern = r"(\".*?\"|\'.*?\')|(/\*.*?\*/|//[^\r\n]*$)"
            # first group captures quoted strings (double or single)
            #  second group captures comments (//single-line or /* multi-line */)
            regex = re.compile(pattern, re.MULTILINE|re.DOTALL)
            def _replacer(match):
            # if the 2nd group (capturing comments) is not None,
            #  it means we have captured a non-quoted (real) comment string.
                if match.group(2) is not None:
                    return "" # so we will return empty to remove the comment
                else: # otherwise, we will return the 1st group
                    return match.group(1) # captured quoted-string
            return regex.sub(_replacer, string)
     
    if __name__=="__main__":
        exsql=ExecuteSqlFile()
        exsql.ExecuteSQl('C:\creation_DB.sql','root', '***', '3306', 'localhost')
    et voilà l'erreur que j'ai eu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';
     UNLOCK TABLES;
     
     --
     -- Table structure for table `hs_org`
     --
     
     DROP TABLE' at line 1
    Cependant, le code tourne très bien que je le lance avec MySQL Workbench.

    Merci beaucoup d'avance !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Pourquoi ne pas lancer le script via MySQL Workbench avec subprocess.Popen?
    Ca vous éviterait de modifier un script qui fonctionne (et de poser des questions de programmation SQL dans un forum Python).

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

Discussions similaires

  1. [MySQL-5.6] Exporter les résultats d'une requête SQL dans un fichier .sql ou .txt
    Par js8bleu dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/09/2013, 10h13
  2. Appel fichier SQL via un fichiers SQL
    Par tibjedi dans le forum Administration
    Réponses: 2
    Dernier message: 03/03/2011, 11h17
  3. Exécution d'un fichier SQL dans un fichier JSP
    Par Tyrael62 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 04/07/2007, 17h29
  4. [SQL] Importer un fichier .sql dans une base de données avec PHP
    Par budiste dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 23/06/2006, 14h15

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