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 :

Besoin d'aide pour ma première BDD


Sujet :

Python

  1. #1
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut Besoin d'aide pour ma première BDD
    Bonjour,
    j'aimerais faire ce qui suit.
    1. Créer une BDD ayant les champs TEXTE suivants : AUTEUR, NOM DU MORCEAU, STYLE.
    2. Stocker cette BDD, et si possible la créer depuis Python.
    3. Faire ensuite une liste des morceaux enregistrés rangés par STYLE, puis AUTEUR, puis MORCEAU.

    Je cherche une solution simple avec une "vraie" BDD.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Tout dépend de ton projet.

    - Si c'est une base mono-utilisateur, sqlite3 est très bien: puissant et rapide. Je l'utilise pour une base de données de plusieurs milliers d'articles avec 12 tables, des contraintes de clés étrangères, des triggers, etc... : ça marche très bien!

    - En cas d'accès concurrents, ou si tu veux quelque chose d'encore plus puissant, il faut utiliser un serveur de base de données, et là je conseillerais plutôt postgresql qui est un excellent produit (je le préfère à mysql). On peut d'ailleurs le placer en serveur sur son PC. Mais si c'est avec un serveur web chez un hébergeur, mysql est beaucoup plus fréquent, et c'est très bien aussi.

    Dans le 2ème cas, sqlite3 est également très bien pour se faire la main.

    Dans les 2 cas, il faut apprendre le langage SQL et avoir des notions de base de la manière dont on construit une base de données relationnelle.

    Pour faire tout ça avec Python, il faut ajouter un "pilote". Pour sqlite3, Python est livré avec. Pour les autres, il faut les télécharger et les installer.


    [edit] Voilà un petit exemple avec sqlite3 fait sur les genoux:

    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
    42
    43
    44
    45
    46
    #! /usr/bin/python
    # -*- coding: utf-8 -*-
    from __future__ import division
    # Python v2.7
     
    import sqlite3
     
    # ouverture de la base (création si elle n'existe pas)
    basesql = "mabase.bd3"
    cnx = sqlite3.connect(basesql)
     
    # obtention d'un curseur
    cur = cnx.cursor()
     
    # création de la table 'matable' si elle n'existe pas encore
    cur.execute("""
                create table if not exists matable(
                    AUTEUR text,
                    MORCEAU text,
                    STYLE text
                );""")
     
    # ajout de 2 articles avec gestion de la transaction
    try:
        cur.execute("""insert into matable values(?, ?, ?)""", ('auteur1', 'morceau1', 'style1'))
        cur.execute("""insert into matable values(?, ?, ?)""", ('auteur2', 'morceau2', 'style2'))
        cnx.commit()
    except sqlite3.Error, err:
        cnx.rollback()
        print "erreur: %s" % (unicode(err.args[0]),)
     
    # extraction de tous les articles, triés STYLE, puis AUTEUR, puis MORCEAU
    cur.execute("""
                select style, auteur, morceau
                    from matable
                    order by style, auteur, morceau
                ;""")
    lignes = cur.fetchall()
     
    # affichage du résultat
    for ligne in lignes:
        print ligne 
     
    # fermeture du curseur et de la base
    cur.close()
    cnx.close()

  3. #3
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Super c'est nickel. Je vais pouvoir enfin faire mes premiers pas en BDD.

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 058
    Par défaut
    @rambc

    Je n'en ai jamais fais non plus, mais ça me dirait bien de commencer aussi

    Merci Tyrtamos

  5. #5
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Il existe aussi chez Python: SQL_Alchemy (http://www.sqlalchemy.org/) que je ne connais pas, mais dont certains disent le plus grand bien.

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 058
    Par défaut
    @tyrtamos

    J'ai commencé, et si ça continue, je ne vais plus pouvoir m'en passer, je me suis créé une petite classe Table et ça se gère nickel.

    Je vais pouvoir gérer tous mes élèves de cette façon maintenant

  7. #7
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    A titre de comparaison, que donnerait une solution avec SQLAlchemy ?

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    140
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 140
    Par défaut
    Bonjour, je ne connais pas SQLAlchemy particulièrement , mais je sais que c'est un ORM (object relational mapping). cela signifie que l'utilisation de la base de données se veut transparante. l'idée est que:
    tu créée une classe qui étend une classe de ton ORM (ici j'invente le SQLAlchemy)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Person( SQLAlchemy ):
      age
      def getAge(self):
        return self.age  
    def setAge(self,newAge):
        self.age = newAge
    tu peux ensuite créer une instance de ta classe fille SQLAlchemy :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    moi = Person()
    moi.setAge(25)
     
    moi.save()
    Ici, j'ai fait un moi.save() qui représente dans l'ORM tout le traitement pour faire soit un nouvel enregistrement , soit une mise à jour de la donnée dans la base.

    La suite du concept et de pourvoir manipuler , retrouver et gérer des objets avec des relations avec un pseudo SQL orienté objet.

    Je ne connais pas l'ORM SQLAlchemy donc je vous invite à regarder comment il se configure et comment il marche.

  9. #9
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Merci pour cette première piste.

    Je regarderais dès que possible la documentation.

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

Discussions similaires

  1. Besoin d'aide pour ma première classe
    Par jacko842 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 21/07/2011, 07h40
  2. Réponses: 13
    Dernier message: 05/05/2007, 00h59
  3. Besoin d'aide pour un MCD des tables de la BDD
    Par nicaud dans le forum Schéma
    Réponses: 3
    Dernier message: 23/04/2006, 10h34
  4. [Conception] BDD & PHP, néophite à besoin d'aide pour un site
    Par Cusack dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 14/02/2006, 20h53

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