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

Bibliothèques tierces Python Discussion :

[peewee] clé étrangère


Sujet :

Bibliothèques tierces Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 10
    Par défaut [peewee] clé étrangère
    Bonjour,

    Afin de progresser en Python, j'essaye d'apprendre à utiliser peewee.
    J'ai une petite base de données sqlite que j'ai créé à la mano.
    Voici un schéma de cette dernière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Personne
        id = clé primaire
        nom
        prenom
        mail
     
    Voiture
        personne_id (clé étrangère qui référence la colonne id de Personne)
        nombre_kilometre
        couleur
    Je n'ai donc pas de clé primaire sur la table Voiture.
    Une personne peut avoir plusieurs voiture mais une voiture ne peut pas appartenir à plusieurs personnes.

    J'aimerai retranscrire ce modèle avec peewee.
    J'arrive à sélectionner ce que je veux dans la table Personne, mais j'ai un problème lorsque je tape sur la table Voiture.
    Voici ma déclaration de classe qui sont supposé représenter ma base de données

    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
    class BaseModel(peewee.Model):
        class Meta:
            db_path="base_de_donnees.db"
            database = peewee.SqliteDatabase(db_path, pragmas={'foreign_keys': 1})
     
    class Personne(BaseModel):
        id = peewee.IntegerField(primary_key=True)
        nom = peewee.CharField()
        prenom = peewee.CharField()
        mail = peewee.CharField()
     
    class Voiture(BaseModel):
        personne_id = peewee.ForeignKey(Personne)
        nombre_kilometre = peewee.IntegerField()
        couleur = peewee.CharField()

    Ensuite, je veux sélectionner tout les infos sur les voitures qui ont un personne_id égal à 5 (maximum 10 résultats), je fais donc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result = Voiture.select().where(Voiture.personne_id==5).limit(10)

    Si je fais un

    ça me retourne bien 10 (au vue des données dans ma base c'est logique).
    Par contre, si je tente d'afficher les résultats avec la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for element in result:
        print result

    Je me prends cette erreur : OperationalError: no such column: t1.id

    J'ai essayé de regarder d'autre bout de code sur internet mais impossible de résoudre mon problème.
    Je pense que le problème viens du fait que j'ai mal déclarer la clé étrangère de la table Voiture.

    Est ce que quelqu’un pourrait m'aider à comprendre d’où viens le problème_me, et surtout me donner une piste pour essayer de le corriger.

    Merci d'avance

  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,

    Je ne connais pas du tout peewee, mais comme je suis curieux, j'ai jeté un coup d’œil à sa doc. J'ai l'impression que les clés étrangères doivent être déclarées de façon spéciale:

    http://docs.peewee-orm.com/en/latest...l-foreign-keys

    Mais je n'en sais pas plus...

Discussions similaires

  1. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  2. [EJB2.1 Entity] [BES] Mapping automatique et clés étrangères
    Par Bobby McGee dans le forum Java EE
    Réponses: 3
    Dernier message: 15/10/2003, 10h33
  3. [clé primaire et étrangère]
    Par viny dans le forum Requêtes
    Réponses: 9
    Dernier message: 05/08/2003, 18h23
  4. clé primaire composée de 2 clés étrangères
    Par Tigresse dans le forum Installation
    Réponses: 5
    Dernier message: 28/07/2003, 14h38
  5. [Script]prob de clés étrangères
    Par Seb7 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 08/07/2003, 17h37

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