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, et surtout me donner une piste pour essayer de le corriger.
Merci d’avance