Outils pour utilisateurs

Outils du site


dev:python:flask:flask-sqlalchemy:relation_one-to-many

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
dev:python:flask:flask-sqlalchemy:relation_one-to-many [2024/12/07 13:57] yoanndev:python:flask:flask-sqlalchemy:relation_one-to-many [2025/08/03 10:43] (Version actuelle) yoann
Ligne 2: Ligne 2:
  
  
 +:TODO_DOCUPDATE:
  
 ====== Flask-SQLAlchemy : relation one-to-many ====== ====== Flask-SQLAlchemy : relation one-to-many ======
Ligne 14: Ligne 15:
  
   * Un magasin (Shop) vend un ou plusieurs produits (Product);   * Un magasin (Shop) vend un ou plusieurs produits (Product);
-  * Un produit est vendu par un seul magasin.+  * Un produit est stocké dans un seul magasin.
  
 ===== Implémentation ===== ===== Implémentation =====
Ligne 69: Ligne 70:
 </code> </code>
  
-:TODO_DOCUPDATE: 
  
-  * Lignes 7 et 27 : les classes doivent hériter de db.Model pour que les objets puissent être enrgistrés dans la bbase de données; 
-  * Pour chaque attribut on définit sous quelle forme il sera stocké dans la base; 
  
-La relation one-to-many+  * Lignes 7 et 25 : les classes doivent hériter de db.Model pour que les objets puissent être enregistrés dans la base de données; 
 +  * Pour chaque attribut, on définit un type valide pour le stockage en base de données; 
 + 
 +===== La relation one-to-many ===== 
  
 ==== L'option lazy="dynamic" de la méthode db.relationship ==== ==== L'option lazy="dynamic" de la méthode db.relationship ====
Ligne 94: Ligne 96:
 <code python> <code python>
 >>> # Afficher les références >>> # Afficher les références
 +>>> dir()
  
 >>> # Création de la base >>> # Création de la base
 +>>> db.drop_all() 
 +>>> db.create_all()
  
 >>> # Instanciation d'un magasin et de quelques produits >>> # Instanciation d'un magasin et de quelques produits
 +>>> l = Shop()
 +>>> l.name = "LouerMoi"
 +>>> db.session.add(l)
 +>>> db.session.commit()
  
 +>>> p = Product()
 +>>> p.name = "Ponceuse Botch"
 +>>> p.price = 59.90
 +>>> 
 +>>> t = Product()
 +>>> t.name = "Tronconeuse Botch"
 +>>> t.price = 169.99
 +>>> 
 +>>> l.add_product(p)
 +>>> l.add_product(t)
  
 +>>> # Récupère tous les produits du magasin
 +>>> l.products.all()
  
->>> # Ne récupérer que les produits dont le prix est supérieur à 30€ +>>> # Ne récupérer que les produits dont le prix est supérieur à 60€ 
->>> rqt.filter(Product.price>30.0).all()+>>> l.products.filter(Product.price > 60.0).all()
  
 >>> # Utilisation de la fonction LIKE >>> # Utilisation de la fonction LIKE
->>> rqt.filter(Product.name.like('%Ri%')).all()+>>> l.products.filter(Product.name.like('%pon%')).all()
 </code> </code>
  
Ligne 113: Ligne 132:
  
   * [[https://pratapsharma.io/flask-sql-alchemy-one-to-many-relationship/|Mise en oeuvre d'une relation one-to-many avec Flask-SQLAlchemy]]    * [[https://pratapsharma.io/flask-sql-alchemy-one-to-many-relationship/|Mise en oeuvre d'une relation one-to-many avec Flask-SQLAlchemy]] 
 +  * [[https://www.digitalocean.com/community/tutorials/how-to-use-one-to-many-database-relationships-with-flask-sqlalchemy|La relation one-to-many avec Flask-SQLAlchemy (digitalocean.com)]]
 +  * https://www.geeksforgeeks.org/python/sqlalchemy-cascading-deletes/
 +  * [[https://www.peterspython.com/fr/blog/sqlalchemy-utilisation-de-cascade-deletes-pour-supprimer-des-objets-connexes|Cascader la suppression des objets enfants (peterspython.com)]]
dev/python/flask/flask-sqlalchemy/relation_one-to-many.1733579844.txt.gz · Dernière modification : 2024/12/07 13:57 de yoann