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 :

Comment utiliser sqlite3


Sujet :

Python

  1. #1
    Membre régulier Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Points : 82
    Points
    82
    Par défaut Comment utiliser sqlite3
    Bonjour,

    comment utiliser sqlite3,
    j'ai bien lu https://docs.python.org/2/library/sqlite3.html mais ce n'est pas une utilisation classique de fichier python.

    je cherche simplement à lire et afficher le contenu de ce type de fichier.

    merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Citation Envoyé par Thierry_V Voir le message
    Bonjour,

    comment utiliser sqlite3,
    j'ai bien lu https://docs.python.org/2/library/sqlite3.html mais ce n'est pas une utilisation classique de fichier python.
    Mais ta base de données n'est pas un fichier Python !

    je cherche simplement à lire et afficher le contenu de ce type de fichier.

    merci
    La page que tu indiques donne bien un exemple de lecture de base sqlite3.

    Quel problème rencontres-tu exactement ?

  3. #3
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Salut,

    Comme l'a fait remarquer Vinss, un fichier sqlite3 n'est pas un fichier Python. Il s'agit d'une Base de donnée sous la forme d'un simple et unique fichier, à l'extension que tu désires. Pour l'interroger, il faut utiliser le langage SQL, avec toutefois quelques spécificitées propre à SQLite. Toutes ces infos sont dans la page que tu cites.

    Pour le reste, la première chose à faire est de déclarer ta base auprès de python, puis tu créé un curseur, un sorte de tampon. Lorsque tu interrogera ta BDD, le resultat sera stocké dedans. Il ne te restera plus qu'à récupéré le contenu de ce tampon.

    Voici une explication plus complète avec exemple: LINK
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  4. #4
    Membre régulier Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    Pour moi c'est la compréhension des termes utilisés

    si je veux réaliser une comparaison d'après ce que je comprends, enfin j'essaie

    en python on fait un open, read et ensuite on traite la lecture, fermeture du fichier

    donc là :
    ma_base = sqlite3.connect("BASE.sqlite") = open

    mon_curseur = ma_base.cursor() = read

    mon_curseur.execute("SELECT * FROM MA_TABLE) et là, la récupération des données pour un traitement
    r = mon_curseur.fetchone()
    mon_listing = r.keys()

    cur.close() = fermeture de la base


    La base d'après ce que je comprends est constituée d'une entête de colonne + données de chaque colonne


    Merci ,si vous pouvez me donner un exemple concret, je n'ai jamais utilisé ce type de base car y a t-il un format standard ou prévoir un décodage.

    merci
    A+

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Salut,

    SQLite est un moteur de base de données de type fichier, c.à.d que les déclarations, les index, les vues, les contraintes, les triggers, etc. et bien sûr les données d'une base sont enregistrés dans un fichier unique.
    Pour autant, ce fichier n'est pas un fichier texte séquentiel de données, pour accéder à la base il faut le moteur SQLite qui va lire/écrire dans le fichier en passant des commandes SQL (ex. SELECT * FROM MaTable pour extraire les lignes de MaTable).

    Si tu veux te lancer dans le fonctionnement de sqlite3, tu peux l'installer et commencer à créer et manipuler tes premières bases en ligne de commande.
    Le module standard sqlite3 de Python ne fait que proposer une interface pour passer des commandes SQL au moteur SQLite à partir de Python.

  6. #6
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    Citation Envoyé par deusyss Voir le message
    Voici une explication plus complète avec exemple: LINK
    Citation Envoyé par deusyss
    Pour créer/manipuler des bases SQLIte, je conseille l'excellent SQLite Manager, PLUG IN de Firefox.
    J'ai commencé par ce plugin et un jour je me suis rendu compte que lorsque je sélectionnais une ligne d'une table, cela m'ouvrait parfois un formulaire avec les données d'une autre ligne, très curieux mais surtout très dangereux

    Suite à ça, j'utilise SQLiteStudio qui me semble pas mal et suffisant.

  7. #7
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Citation Envoyé par f-leb Voir le message
    J'ai commencé par ce plugin et un jour je me suis rendu compte que lorsque je sélectionnais une ligne d'une table, cela m'ouvrait parfois un formulaire avec les données d'une autre ligne, très curieux mais surtout très dangereux

    Suite à ça, j'utilise SQLiteStudio qui me semble pas mal et suffisant.
    Effectivement pas très securitaire, je n'ai jamais eu ce soucis personnellement, mais aucun logiciel n'étant parfait...

    Je ne connaissais pas le logiciel que tu as évoqué, mais je l'essaierais à l'occasion, car ce que je reprochais au plugin c'est qu'il était dépendant de FF et en regle generale, je prefere que tout soit bien distinct pour eviter tout probleme.

    Concernant SQLITE3, j'ajouterais que c'est la BDD qu'utilise Firefox, ainsi que la plupart des smartphones. Donc assez répandu.

    Thierry_V, rapport à ton résumé, c'est bien ça.

    Il faut voir (pour imagé uniquement hein), ta BDD comme une feuille calc. Le titre des colonnes (A, B, C, ...) correspondent... aux titres des colonnes. Les numero de lignes, correspondent à ce qu'on appelle un row_id. Chaque ligne, correspond à un enregistrement. Chaque row_id est unique et lié à un enregistrement spécifique.

    Quand tu interroge ta base de donnée, ta requête permet de déterminer une liste de row_id, puis la BDD va chercher les enregistrements correspondant. Ensuiute, en foction des colonnes demandées, un tri est fait avant de t'afficher les résultats de la requête que tu peux alors visionner.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

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

    Regardez la barre de menu de developpez.
    Les bases de données (en abrégé SGDB) ont une place équivalente à la programmation.

    C'est un vocabulaire (tables, index, clés, relations), un langage (SQL), des outils des cours, faqs et expertises spécifiques.
    Si vous n'avez pas pris le temps de comprendre un peu de quoi çà parle, difficile d'automatiser des séquences d'instructions par programme ou de savoir si une question relève plutôt du monde de la programmation ou de celui du SGDB.

    Citation Envoyé par Thierry_V
    Merci ,si vous pouvez me donner un exemple concret, je n'ai jamais utilisé ce type de base car y a t-il un format standard ou prévoir un décodage
    La documentation du module sqlite3 vous donne déjà des exemples concrets et les correspondances entre les types du SGDB et Python.
    Mais si vous n'avez pas pris le temps de vous former aux SGDB, c'est un charabia incompréhensible.

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

  9. #9
    Membre régulier Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Points : 82
    Points
    82
    Par défaut
    bonjour,

    Humm vos explications m'informe plus que vous croyez, j'avais besoin d'une correspondance logique par rapport aux autres langage, même si j'avais à apparemment compris un principe de base.
    Je vais réaliser des essais car l'explication de deusyss me donne l'image de principe du fonctionnement, ensuite à moi de voir.
    merci à vous tous,


    Thierry

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Thierry_V Voir le message
    ma_base = sqlite3.connect("BASE.sqlite") = open
    ok. Et si ta base n'est pas trop grosse, tu peux alors la créer en mémoire avec ma_base = sqlite3.connect(":memory:"). Dans ce cas, il n'y aura aucune écriture disque (mais base perdue en fin de code).

    Citation Envoyé par Thierry_V Voir le message
    mon_curseur = ma_base.cursor() = read
    Non. mon_curseur = ma_base.cursor() => création d'un tampon IO - cet élément n'existant pas dans la manipulation de fichiers, on ne peut pas établir de comparaison

    Citation Envoyé par Thierry_V Voir le message
    mon_curseur.execute("SELECT * FROM MA_TABLE) et là, la récupération des données pour un traitement
    Exact - Tout le résultat de ta requête se trouve dans le tampon IO

    Citation Envoyé par Thierry_V Voir le message
    r = mon_curseur.fetchone()
    récupération de la première ligne du résultat (qui est alors effacé du tampon IO). Et r = mon_curseur.fetchall() => récupération de toutes les lignes du résultat

    Citation Envoyé par Thierry_V Voir le message
    mon_listing = r.keys()
    Faut que je vérifie mais je suis pas certain qu'une ligne "résultat" soit un dictionnaire Python. Je pense plutôt que c'est un simple tuple donc
    • print r[0] => affiche l'info de la ligne située en première colonne
    • print r[1] => affiche l'info de la ligne située en seconde colonne
    • etc


    Citation Envoyé par Thierry_V Voir le message
    cur.close() = fermeture de la base
    Non, libération des ressources allouées au tampon - ma_base.close() = fermeture de la base

    Citation Envoyé par Thierry_V Voir le message
    La base d'après ce que je comprends est constituée d'une entête de colonne + données de chaque colonne
    Non, ça c'est une table de la base. Et la base, elle, est constituée d'une ou plusieurs tables. Pour illustrer, on peut comparer la base avec un document Excel et une table c'est une feuille du document.
    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]

  11. #11
    Membre régulier Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Points : 82
    Points
    82
    Par défaut
    Bonjour tous,

    Sve@r,

    merci là, je dois arriver à mon but.
    je vous tiens au courant.
    Thierry

  12. #12
    Expert éminent

    Avatar de deusyss
    Homme Profil pro
    Expert Python
    Inscrit en
    Mars 2010
    Messages
    1 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Expert Python
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 659
    Points : 8 442
    Points
    8 442
    Par défaut
    Très bon ajout Sve@r.

    Thierry_V, si tu juge ton sujet terminé, n'oublié pas de passer le sujet à

    Merci pour les autres utilisateurs.
    "La connaissance appartient à tout le monde" (Film Antitrust)

    Tout le nécessaire pour Python:
    *News/Accueil *Cours/tutoriels *FAQ
    *Forums *Outils dédiés *Mon espace personnel avec mes Articles, Cours et Tutoriels

  13. #13
    Membre régulier Avatar de Thierry_V
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2013
    Messages : 153
    Points : 82
    Points
    82
    Par défaut
    Bonjour,

    dès que j'ai réussi le code, je le placerais pour les autres et mettrai le sujet résolu
    merci

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Prenez aussi le temps de lire le chapitre 18 du Swinnen, çà vous donnera peut être exemples, idées,....
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. Comment utiliser un cache ?
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 14/03/2003, 09h55
  3. comment utiliser actionscript ?
    Par webs dans le forum Flash
    Réponses: 3
    Dernier message: 09/02/2003, 23h11
  4. Comment utiliser OUT ?
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 3
    Dernier message: 20/07/2002, 09h35
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

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