Flask
Flask-SQLAlchemy
Recherche…
Introduction
Flask-SQLAlchemy est une extension Flask qui ajoute la prise en charge de la populaire application de mappage d'objets relationnels (ORM) SQLAlchemy aux applications Flask. Il vise à simplifier SQLAlchemy with 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 simple modèle Flask-SQLAlchemy, nous pouvons ajouter un nom de tableau optionnel à 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 la base de données.
Notre classe héritera du modèle de base qui est une base déclarative configurée. Il n'est donc pas nécessaire de définir explicitement la base comme nous le ferions avec 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]
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. Afin de réaliser cela, nous plaçons une clé étrangère sur l'enfant faisant référence au parent issu de notre exemple. Nous plaçons une clé étrangère sur la classe Post pour faire référence à la classe User. On utilise ensuite la relationship()
sur le parent auquel on accède via notre objet SQLAlchemy db
. Cela nous permet alors de référencer une collection d'objets 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.