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 :

Structure DB avec python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2019
    Messages : 2
    Par défaut Structure DB avec python
    Bonjour !

    Je ne sais pas si c'est le bon endroit pour poster, si ce n'est pas le cas je vous demande pardon, j'ai tenté de le faire au meilleur endroit. je voudrais aussi signaler que je suis débutant et que mes recherches n'ont pas été fructueuse jusque là concernant cette question !
    Alors voilà: j'utilise des DB pour stocker massivement différents objets avec divers attributs (ex: un .db pour les champignons : leur taille, lieu de reproduction, couleur de leur chapeau; puis un autre pour les plantes: taille, couleur, besoin en lumière, en eau; puis encore un autre pour les insectes: leur taille, leur nourriture, durée de vie etc) chaque objet a différents attributs et le nombre de ceux-là varient selon le type d'objet.

    Une fois les objets stockés j'utilise des requêtes SQL pour récupérer l'objet et ses attributs avec un mot clé que saisie l'utilisateur dans une interface de recherche, pour le faire, voilà ce que j'ai écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cursor.execute(SELECT * FROM nom_table WHERE nom_objet = mot_clef)
            if len(cursor.fetchall()) == 0:
    De cette manière le mot clé est recherché dans le .db, et si il n'en retourne rien, il passe a l'ouverture d'un autre .db pour réitérer la recherche.
    Les deux principaux problèmes avec cette méthode est son extrême redondance et le fait que mon fetchall retourne un tuple alors que j'essaie de récupérer ces informations en liste de strings
    Sauriez-vous comment je pourrait procéder plus proprement s'il vous plait ?
    Merci !

  2. #2
    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 montyalte Voir le message
    Les deux principaux problèmes avec cette méthode est son extrême redondance et le fait que mon fetchall retourne un tuple alors que j'essaie de récupérer ces informations en liste de strings.
    Sauriez-vous comment je pourrait procéder plus proprement s'il vous plait ?
    L'extension du fichier n'indique pas le SGDB utilisé, on peut supposer qu'il s'agit de sqlite3 qui vient avec Python en standard.
    Pour le reste, si .fetchall retourne une liste de tuples et que vous voulez en faire autre chose, libre à vous (c'est aussi pour çà qu'on programme: adapter, mettre en forme,...).
    De plus, pourquoi plusieurs fichiers .db alors que vous pouvez avoir plusieurs tables par "fichier db" (voire une grande table dans un seul et même "fichier db"?

    Enfin, si vous avez écrit cursor.execute(SELECT * FROM nom_table WHERE nom_objet = mot_clef), çà ne fonctionne pas! Et ouvrir la documentation du pilote de la base de donnée utilisée pour voir comment passer des paramètres à la requête n'est pas du luxe (et c'est idiot de le faire à votre place car vous allez probablement y découvrir bien plus que la réponse au problème ponctuel).

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Autodidacte
    Inscrit en
    Novembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Autodidacte

    Informations forums :
    Inscription : Novembre 2019
    Messages : 2
    Par défaut
    Merci de votre réponse,
    je n'arrive pas a trouver comment transformer un tuple en string, mes précedentes tentatives m'ont donné des strings avec des parenthèses a l'intérieur
    Quant a mes db (qui sont effectivement est sous sqlite3) j'ai utilisé plusieurs fichiers car l'un d'eux stock des milions d'objets indexés par 700 clés environ( je classe les objets par leur deux premieres lettres), la ou les autres en stockent beaucoup moins et sont prioritaires dans la recherche du mot clé

  4. #4
    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 montyalte Voir le message
    je n'arrive pas a trouver comment transformer un tuple en string, mes précedentes tentatives m'ont donné des strings avec des parenthèses a l'intérieur
    Sorti de n'importe quel tuto. Python vous devriez savoir faire çà:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> s = tuple('abcd')
    >>> s
    ('a', 'b', 'c', 'd')
    >>> ''.join(s)
    'abcd'
    >>>
    Peut être que dans votre cas, c'est plus compliqué mais... faut montrer des choses pour voir.

    Citation Envoyé par montyalte Voir le message
    Quant a mes db (qui sont effectivement est sous sqlite3) j'ai utilisé plusieurs fichiers car l'un d'eux stock des milions d'objets indexés par 700 clés environ( je classe les objets par leur deux premieres lettres), la ou les autres en stockent beaucoup moins et sont prioritaires dans la recherche du mot clé
    Construire un modèle de données qui soit adapté aux requêtes à faire n'est pas intuitif et n'a rien à voir avec Python (vous avez des forums base de données pour çà).... Si c'est mal fait, vous allez juste trainer un boulet.

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

Discussions similaires

  1. création de base mySQL avec python
    Par preacher_man dans le forum Bibliothèques tierces
    Réponses: 7
    Dernier message: 23/06/2006, 19h38
  2. cmt se connecté a oracle pour faire une requete avec python
    Par dipajero dans le forum Bibliothèques tierces
    Réponses: 6
    Dernier message: 28/12/2005, 20h22
  3. Réponses: 2
    Dernier message: 19/12/2005, 13h15
  4. Les 128 derniers bits d'un fichier en ligne avec Python ?
    Par ecocentric dans le forum Réseau/Web
    Réponses: 7
    Dernier message: 26/09/2005, 12h40
  5. [débutant][Conception] Structure dynamique avec Java
    Par blaiseac dans le forum Général Java
    Réponses: 5
    Dernier message: 18/11/2004, 23h00

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