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

Langages de programmation Discussion :

Quel langage pour gérer une petite base de données d'employés ?


Sujet :

Langages de programmation

  1. #21
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    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
    # Fichier <project>/settings.py
    DATABASE_ENGINE = 'sqlite3'
    DATABASE_NAME = 'db.db'
    
    # Fichier <project>/<models>/models.py
    from django.db import models
    
    class Owner(models.Model):
        last_name = models.CharField('Nom', maxlength=100, unique=True)
        first_name = models.CharField('Prénom', maxlength=100)
    
    class Car(models.Model):
        model = models.CharField('Modèle', maxlength=100)
        owner = models.ForeignKey(Owner)
    
    # N'importe où
    from project.app.models import *
    o = Owner(first_name='John', last_name='Doe')
    o.save() # Jamais fait implicitement
    c = Car(model='Nissan Versa', owner=o)
    c.save()
    
    try:
        o = Owner(first_name='Tom', last_name='Doe')
        o.save()
    except Exception, e: # Me souviens plus par coeur le nom de l'exception
        print e
    À noter, en ajoutant la ligne suivante dans les classes Model, on obtient une interface administrative automatique:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Owner(models.Model):
        last_name = models.CharField('Nom', maxlength=100, unique=True)
        first_name = models.CharField('Prénom', maxlength=100)
    
        class Admin: pass

  2. #22
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par madfu Voir le message
    développer (facilement)
    J'ai écrit une petite application de gestion des employés.
    Chaque employé a :
    - un nom
    - un prénom
    - une adresse
    - un code postal
    - une ville

    Création de la base de données (SQLite) => 1 minute

    Création d'une interface de gestion qui permet de :
    - lister les employés
    - ajouter un employé
    - modifier un employé
    - supprimer un employé
    + liaison avec la base de données => 1 minute

    Ajout de contraintes lors de la création et la modification d'un employé :
    - tous les champs doivent être remplis
    - le code postal doit être un nombre
    (champs problématiques encadrés en rouge lors d'un échec, explication de pourquoi les champs incorrects le sont - vide, pas un nombre, ... -...) => 1 minute

    Seul bémol : tout en anglais.
    Mais la francisation (changer cinq noms de champs dans un fomulaire, localiser les erreurs) se fait en cinq-dix minutes quand on à l'habitude (compter plutôt 1/2 heure les premières fois).

    Citation Envoyé par GnuVince Voir le message
    code...
    Ah ouais, c'est mignon aussi

    Le seul problème c'est que j'aime pas beaucoup Python :p

  3. #23
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Citation Envoyé par rurouni alex Voir le message
    Ah ouais, c'est mignon aussi

    Le seul problème c'est que j'aime pas beaucoup Python :p
    Ah ben là, ya pas grand chose que je peux faire pour toi Ce que je peux dire, c'est que Django est très bien, très complet, a de la très bonne documentation (qui a commencé à être traduite en français), etc.

    J'ai fait longtemps du Ruby, avant le boom Ruby On Rails (j'avais même écrit un tutoriel dans le temps de 0.8), je suis retourné à Python car Python fonctionnait mieux sous Windows, avait plus de librairies et de documentation.

    De nos jours, il y a un aspect de la communauté Ruby qui me tape sur les nerfs: les DSLs. Je vais dire comme un membre de la communauté Perl, c'est pas parce qu'il n'y a pas de parenthèses et qu'on utilise des symboles qu'on a un DSL. Souvent, ce qui fait la différence est le choix judicieux de noms, et c'est sans doute l'une des choses les plus importantes en programmation.

    Enfin, bonne continuation avec Rails, si le Django t'intéresse, on est très ouverts. Il y a une salle de discussion francophone sur Freenode, #django-fr.

  4. #24
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    je vais installer et tester lazarus rapido sur un hello world pour voir ce que ça donne.

  5. #25
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par rurouni alex Voir le message
    J'ai écrit une petite application de gestion des employés.
    Chaque employé a :
    - un nom
    - un prénom
    - une adresse
    - un code postal
    - une ville

    Création de la base de données (SQLite) => 1 minute

    Création d'une interface de gestion qui permet de :
    - lister les employés
    - ajouter un employé
    - modifier un employé
    - supprimer un employé
    + liaison avec la base de données => 1 minute

    Ajout de contraintes lors de la création et la modification d'un employé :
    - tous les champs doivent être remplis
    - le code postal doit être un nombre
    (champs problématiques encadrés en rouge lors d'un échec, explication de pourquoi les champs incorrects le sont - vide, pas un nombre, ... -...) => 1 minute
    tu utilises quoi comme langage/edi ?

  6. #26
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par cervi Voir le message
    je vais installer et tester lazarus rapido sur un hello world pour voir ce que ça donne.
    avec la version 0.9.22 beta (windows) :
    OMG, 6,41 Mo pour un hello world avec 2 boutons...
    avec cette méthode :
    http://lazforum-fr.tuxfamily.org/viewtopic.php?id=48
    -> 1,56 Mo
    un peu volumineux pour un hello world ^^

    par contre stabilité ok
    bizarreté lors de la compilation si on enregistre le même projet dans une arborescence différente mais bon ça vient peut etre de moi qui ait fait des mauvaises manip.

  7. #27
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Citation Envoyé par cervi Voir le message
    tu utilises quoi comme langage/edi ?
    J'utilise le framework Ruby on Rails.

    La création d'une application simple (comme celle que j'ai faite au-dessus) comporte peu d'étapes :
    1) écriture du .sql pour la base de données (RoR permet aussi de le faire autrement)
    2) une commande pour générer la base sqlite
    3) une commande pour générer l'application
    4) déplacement de la base de données dans le 'bon' répertoire
    5) on lie la base de données à l'application (modification de deux lignes dans un fichier de configuration)
    5) une commande pour générer toutes les pages/tous les formulaires (listing, ajout, modification, suppressions)
    6) on ajoute les conditions que l'on veut pour qu'un champ soit valide (deux lignes dans un fichier)

    Je mettrais les étapes détaillées ici cet-après-midi (là faut que j'aille acheter à manger et du papier-cadeau :p).

    Je n'utilise aucun EDI, juste un terminal et un éditeur de texte (emacs dans mon cas, mais n'importe lequel fait l'affaire).
    Il existe aussi des EDI pour RoR (j'en ai testé un mais je le trouve trop lourd, pas testé les autres).

  8. #28
    Membre expérimenté Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Points : 1 359
    Points
    1 359
    Par défaut
    Voici la marche à suivre :

    Dans un terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rails employees
    cd employees
    emacs db/db.sql &
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE 'employees' (
      'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
      'last_name' VARCHAR(100) NOT NULL,
      'first_name' VARCHAR(100) NOT NULL,
      'address' VARCHAR(100) NOT NULL,
      'zip' INTEGER NOT NULL,
      'city' VARCHAR(100) NOT NULL
    );

    Dans le terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlite3 db/db.db < db/db.sql
    Dans config/database.yml, changer la section :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    development:
      adapter: mysql
      database: employees_development
      username: root
      password:
      socket: /var/run/mysqld/mysqld.sock
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    development:
      adapter: sqlite3
      dbfile: db/db.db

    Dans le terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    script/generate scaffold Employee
    Editer le fichier : app/models/employee.rb
    Ancien fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class Employee < ActiveRecord::Base
    end
    Nouveau fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Employee < ActiveRecord::Base
      validates_presence_of :last_name, :first_name, :address, :zip, :city
      validates_numericality_of :zip
    end
    Dans le terminal :
    Résultat :
    On ouvre un navigateur à l'adresse localhost:3000.
    On clique sur New employee.
    On remplit le formulaire (avec des erreurs).
    Il n'aime pas.
    On corrige des erreurs et on en rajoute une.
    Cette fois c'était bon.
    On clique sur show.
    On édite.
    Résultat de l'édition.
    On clique sur destroy.
    Résultat après confirmation.

    C'est juste une petite démo de test.

    Il faudrait :
    - positionner les éléments pour que ça ressemble à ce que tu voulais dans ton premier post (et mettre un peu de couleur pour faire plus zoli :p)
    - passer en français.

  9. #29
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    merci pour les infos à nouveau, je vais digérer un peu tout ça et je vous tient éventuellement au courant.

Discussions similaires

  1. Quel SGBD choisir pour une petite base de donnée sur clé USB ?
    Par kedare dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 29/07/2008, 16h31
  2. Quel langage pour implementer une base de connaissance sur Web ?
    Par Siguillaume dans le forum Général Conception Web
    Réponses: 18
    Dernier message: 04/02/2008, 11h43
  3. Réponses: 13
    Dernier message: 12/12/2006, 21h44
  4. Quel langage pour attaquer une base MySQL ?
    Par shkyo dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 30/06/2006, 13h48
  5. [VBA-E]gérer une petite base de données
    Par massilia80 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/02/2006, 13h59

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