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

Prochaine révision
Révision précédente
dev:python:flask:flask_sqlalchemy [2024/11/01 18:06] – créée 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 ======
  
 +===== 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.Float(precision=2)
 +  * db.String(100)
 +  * db.Text
 +  * db.Date
 +  * 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
 +
 +===== 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 =====
  
 +  * https://flask-sqlalchemy.palletsprojects.com/en/stable/
 +  * https://docs.sqlalchemy.org/en/20/orm/basic_relationships.html#one-to-one
   * https://pythonbasics.org/flask-sqlalchemy/   * https://pythonbasics.org/flask-sqlalchemy/
 +  * https://www.slingacademy.com/article/solving-sqlalchemy-integrityerror-when-inserting-data/
 +  * 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://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.1730484410.txt.gz · Dernière modification : 2024/11/01 18:06 de yoann