Outils pour utilisateurs

Outils du site


dev:python:flask:flask_sqlalchemy

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 [2024/11/22 18:42] yoanndev:python:flask:flask_sqlalchemy [2025/08/28 18:35] (Version actuelle) – ↷ Liens modifiés en raison d'un déplacement. yoann
Ligne 1: Ligne 1:
-{{tag>dev python orm sqlachemy}}+{{tag>dev python orm flask sqlachemy}}
  
 :TODO_DOCUPDATE: :TODO_DOCUPDATE:
  
-====== Flask : extension sqlachemy ======+====== L'extension Flask-SQLAlchemy ======
  
-===== Types de champs =====+===== A propos de SQLAlchemy ===== 
 + 
 +SQLAlchemy est un **ORM** (Object-Relational Mapping) il permet de traduire les objets Python en données pouvant être enregistrées dans un SGBD externe.  
 + 
 + 
 +===== Installation ===== 
 + 
 +Pour pouvoir utiliser l'extension, installer le module **Flask-SQLAlchemy** 
 + 
 +<code bash> 
 +# Dans votre environnement virtuel 
 +pip install Flask-SQLAlchemy 
 +</code> 
 + 
 +===== Options de configuration ===== 
 + 
 +Lors de la phase de développement ou pendant les tests, il peut être utile d'utiliser une base de donnée SQLite en RAM seulement (pour éviter les écritures sur disque). 
 + 
 +Pour cela on définit la valeur de la variable de configuration ''SQLALCHEMY_DATABASE_URI'' comme indiqué ci-dessous : 
 + 
 +<code python> 
 +# Pour utiliser une base SQLite en mémoire l'URL doit être vide 
 +app.config["SQLALCHEMY_DATABASE_URI"] = 'sqlite://' 
 +</code> 
 + 
 + 
 + 
 +Il peut être également utile d' [[dev:python:flask:extensions:flask-sqlalchemy:afficher-les-requetes|afficher les requêtes produites par l'ORM]]. 
 + 
 + 
 + 
 + 
 + 
 + 
 +===== Types de champs usuels ===== 
 + 
 +  * db.Boolean
   * db.Integer   * db.Integer
-  * db.Float+  * db.Float(precision=2)
   * db.String(100)   * db.String(100)
   * db.Text   * db.Text
 +  * db.Date
   * db.DateTime   * db.DateTime
  
 +source : [[https://docs.sqlalchemy.org/en/20/orm/declarative_tables.html#mapped-column-derives-the-datatype-and-nullability-from-the-mapped-annotation|Les types de données (docs.sqlalchemy.org) ]]
 +
 +===== Réordonner les enregistrements =====
 +
 +Ici on récupères tous les enregistrements en spécifiant l'ordre
 +
 +
 +===== Utiliser Clause WHERE =====
 +
 +<code python>
 +>>> # Récupère l'enregistrement dont le nom est 'memo'
 +>>> mc = MarkerCategory.query.where(MarkerCategory.name == 'memo').all()
 +>>> mc
 +[<MarkerCategory id=2 name="memo" builtin=True icon=/static/img/notepad_9021656_icon.png marker_icon=None >]
 +</code>
 +
 +
 +===== Définition des associations =====
 +
 +Les différentes associations entre tables sont abordées dans les notes suivantes :
 +  * Définir des associations one-to-many
 +  * Définir des associations many-to-many
  
-===== Relation one-to-many =====+===== Traitement des erreurs =====
  
 +<code python>
 +from sqlalchemy.exc import IntegrityError, OperationalError
 +...
  
 +try:
 +    # Code SQLAlchemy susceptible de lever une exception
 +    db.session.commit()
 +    
 +except (IntegrityError, OperationalError) as e:
 +    # Traitement des exceptions
 +    db.session.rollback()
 +    print(f"An error occurred: {str(e)}")
 +</code>
  
 ===== Références ===== ===== Références =====
Ligne 25: Ligne 96:
   * https://www.codementor.io/@garethdwyer/building-a-crud-application-with-flask-and-sqlalchemy-dm3wv7yu2   * https://www.codementor.io/@garethdwyer/building-a-crud-application-with-flask-and-sqlalchemy-dm3wv7yu2
   * https://www.digitalocean.com/community/tutorials/how-to-use-one-to-many-database-relationships-with-flask-sqlalchemy   * https://www.digitalocean.com/community/tutorials/how-to-use-one-to-many-database-relationships-with-flask-sqlalchemy
 +  * https://stackoverflow.com/questions/18807322/sqlalchemy-foreign-key-relationship-attributes
 +  * https://www.youtube.com/watch?v=g0-7TrVCNtg
 +  * [[https://codezup.com/mastering-database-operations-with-sqlalchemy-flask/|Maitriser les opérations sur les bases de données avec Flask-SQLAlchemy (codezup.com)]]
 +  * [[https://dnmtechs.com/catching-sqlalchemy-exceptions-in-python-3-programming/|Traitement des exceptions SQLAlchemy (dnmtechs.com)]]
dev/python/flask/flask_sqlalchemy.1732300975.txt.gz · Dernière modification : 2024/11/22 18:42 de yoann