Partage
  • Partager sur Facebook
  • Partager sur Twitter

Clé étrangère avec peewee

sqlite / python 2.7

    10 août 2018 à 10:43:57

    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 :

    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

    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.

    result = Voiture.select().where(Voiture.personne_id==5).limit(10)


    Si je fais un 

    print result.count() 

    ç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 :

    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 :)

    -
    Edité par Bibblon 10 août 2018 à 10:45:06

    • Partager sur Facebook
    • Partager sur Twitter

    Clé étrangère avec peewee

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown