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

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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow