Ricerca…


introduzione

Flask-SQLAlchemy è un'estensione Flask che aggiunge il supporto per il popolare Python object relational mapper (ORM) SQLAlchemy alle applicazioni Flask. Ha lo scopo di semplificare SQLAlchemy con Flask fornendo alcune implementazioni predefinite per le attività comuni.

Installazione ed esempio iniziale

Installazione

pip install Flask-SQLAlchemy

Modello semplice

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'esempio di codice sopra mostra un semplice modello Flask-SQLAlchemy, possiamo aggiungere un nometabella facoltativo alla dichiarazione del modello, ma spesso non è necessario in quanto Flask-SQLAlchemy utilizzerà automaticamente il nome della classe come nome della tabella durante la creazione del database.

La nostra classe erediterà dal modello di baseclass che è una base dichiarativa configurata, quindi non è necessario per noi definire esplicitamente la base come faremmo con SQLAlchemy.

Riferimento

Relazioni: da uno a molti

    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')

In questo esempio abbiamo due classi la classe User e la classe Post, la classe User sarà nostra madre e il post sarà il nostro post in quanto solo post può appartenere a un utente ma un utente può avere più post. Per riuscirci, mettiamo una chiave esterna sul figlio che fa riferimento al genitore che proviene dal nostro esempio, poniamo una chiave esterna sulla classe Post per fare riferimento alla classe User. Quindi usiamo relationship() sul genitore al quale accediamo tramite il nostro oggetto SQLAlchemy db . Questo ci consente quindi di fare riferimento a una collezione di articoli rappresentati dalla classe Post che è nostra figlia.

Per creare una relazione bidirezionale usiamo backref , questo permetterà al bambino di fare riferimento al genitore.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow