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 :

SQLite difference entre execute et executescript


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2016
    Messages : 80
    Par défaut SQLite difference entre execute et executescript
    Bonjour,

    Dans le cadre de la gestion d'une petite base de donné SQLite:
    Je n'arrive pas a trouver de doc expliquant clairement l'utilisation de "executescript".
    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        # Getting all tables from sqlite_master
        sql_query = """SELECT name FROM sqlite_master
        WHERE type='table';"""
     
        # Creating cursor object using connection object
        cursor = sqliteConnection.cursor()
     
        # executing our sql query
        cursor.executescript(sql_query)
        print(cursor.fetchall())
        cursor.execute(sql_query)
        print(cursor.fetchall())
    Avec ce code je m'attend a obtenir une liste de table pour "execute" et pour "executescript". Mais executescript me retourne une liste vide.
    Peut-on m'expliquer pourquoi?

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par alexis_c Voir le message
    Dans le cadre de la gestion d'une petite base de donné SQLyte:
    Ok, donc déjà ça commence bien. Incapable d'écrire correctement "SQLite" on sent de suite que tu as longtemps cherché et lu...

    Citation Envoyé par alexis_c Voir le message
    Je n'arrive pas a trouver de doc expliquant clairement l'utilisation de "executescript".
    https://docs.python.org/fr/3/library....executescript

    Citation Envoyé par alexis_c Voir le message
    Peut-on m'expliquer pourquoi?
    Parce que le second n'est pas fait pour faire du requêtage.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2016
    Messages : 80
    Par défaut
    Orthographe corrigée...

    La doc montre un script en exemple.
    Mais comment savoir ce qui n'est pas un script.
    Donc je dois retenir qu'une requête n'est pas un script. Ok

    En vous remerciant pour votre réponse.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Tu te focalises sur le mot "script".
    Tout est script. Mais une requête renvoie des informations donc passe par un outil différent. A la limite tu utilises "execute()" tout le temps et ça marche. Tout comme tu peux utiliser deux couteaux (pointus) pour manger et ça marche aussi. Mais le couteau n'a pas pour but de piquer les aliments, tout comme "execute()" n'a pas pour but d'exécuter des requêtes qui n'ont pas besoin de retourner des infos.
    En revanche tu ne peux pas utiliser de fourchette pour couper et de même tu ne peux pas utiliser "executescript()" pour du select.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2016
    Messages : 80
    Par défaut
    Je te remercie également Sve@r.
    Vous m'avez tout les deux aidée à comprendre l'usage de execute et executescript...

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par alexis_c Voir le message
    Peut-on m'expliquer pourquoi?
    Un script peut contenir plusieurs instructions SQL: créer une table, y insérer des enregistrements, ...
    Il n'y a pas "d'interface" simple côté quoi retourner à l'appelant (à part OK/KO) contrairement au simple execute ou suivant l'instruction on sait ce que l'on doit récupérer.

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

  7. #7
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2016
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Août 2016
    Messages : 80
    Par défaut
    Merci Wiztricks pour cette réponse plus éclairante.
    Donc pas de retour autre que OK/KO avec "executescript".

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par alexis_c Voir le message
    Merci Wiztricks pour cette réponse plus éclairante.
    Donc pas de retour autre que OK/KO avec "executescript".
    C'est une réponse que je dirais "logique" et vous avez le droit de douter.

    Dans ce cas, il faut aller lire les sources(*) ou trouver des contre-exemples (qui retournent autre chose que rien ou la levée d'une exception)... Ce qui peut être "fatigant" et préférer "faire confiance" est une option raisonnable suivant ce qu'on va pouvoir faire avec de la réponse ou du problème qu'on cherche à résoudre.

    (*) les sources sont dans _sqlite3/cursor.c. Mon souvenir est que ça découpe le tout en instructions SQL élémentaires exécutée une après l'autre. Ca ne change que l'état interne et çà retourne une référence au "cursor" ou ça lève une exception.

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 10/09/2020, 14h31
  2. Difference entre test et executable
    Par IN31FO dans le forum WinDev
    Réponses: 6
    Dernier message: 28/05/2017, 08h07
  3. Difference entre execution local et reseau
    Par topolino dans le forum Services Web
    Réponses: 1
    Dernier message: 25/06/2009, 18h37
  4. difference d'execution entre dubbugage et mode normal
    Par scons dans le forum VBA Access
    Réponses: 9
    Dernier message: 11/08/2008, 15h56
  5. Réponses: 6
    Dernier message: 29/03/2008, 17h14

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