Flask-SQLAlchemy
Sur cette page
Flask-SQLAlchemy est une extension Flask qui ajoute la prise en charge du populaire mappeur relationnel d’objet Python (ORM) SQLAlchemy aux applications Flask. Il vise à simplifier SQLAlchemy avec Flask en fournissant des implémentations par défaut pour les tâches courantes.
Installation et exemple initial
Installation
pip install Flask-SQLAlchemy
Modèle simple
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
email = db.Column(db.String(120), unique=True)
L’exemple de code ci-dessus montre un modèle Flask-SQLAlchemy simple, nous pouvons ajouter un nom de table facultatif à la déclaration du modèle, mais ce n’est souvent pas nécessaire car Flask-SQLAlchemy utilisera automatiquement le nom de la classe comme nom de table lors de la création de la base de données.
Notre classe héritera du modèle de classe de base qui est une base déclarative configurée, il n’est donc pas nécessaire pour nous de définir explicitement la base comme nous le ferions lors de l’utilisation de SQLAlchemy.
Référence
- URL Pypi : [https://pypi.python.org/pypi/Flask-SQLAlchemy][1]
- URL de la documentation : [http://flask-sqlalchemy.pocoo.org/2.1/][1]
[1] : http://flask-sqlalchemy.pocoo.org/2.1/
Relations : un à plusieurs
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80))
email = db.Column(db.String(120), unique=True)
posts = db.relationship('Post', backref='user')
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
content = db.Column(db.Text)
user_id = db.Column(db.Integer, db.ForeignKey('user.id')
Dans cet exemple, nous avons deux classes, la classe User et la classe Post, la classe User sera notre parent et la publication sera notre publication car seule la publication peut appartenir à un utilisateur, mais un utilisateur peut avoir plusieurs publications. Pour y parvenir, nous plaçons une clé étrangère sur l’enfant référençant le parent de notre exemple, nous plaçons une clé étrangère sur la classe Post pour référencer la classe User. Nous utilisons ensuite relationship()
sur le parent auquel nous accédons via notre objet SQLAlchemy db
. Cela nous permet ensuite de référencer une collection d’éléments représentés par la classe Post qui est notre enfant.
Pour créer une relation bidirectionnelle, nous utilisons ‘backref’, cela permettra à l’enfant de référencer le parent.