Zoeken…


Invoering

Flask-SQLAlchemy is een Flask-extensie die ondersteuning voor de populaire Python object relationele mapper (ORM) SQLAlchemy toevoegt aan Flask-toepassingen. Het beoogt SQLAlchemy met Flask te vereenvoudigen door een aantal standaardimplementaties voor veelvoorkomende taken te bieden.

Installatie en eerste voorbeeld

Installatie

pip install Flask-SQLAlchemy

Eenvoudig model

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)

Het bovenstaande codevoorbeeld toont een eenvoudig Flask-SQLAlchemy-model, we kunnen een optionele tabelnaam toevoegen aan de modeldeclaratie, maar dit is vaak niet nodig omdat Flask-SQLAlchemy automatisch de klassenaam gebruikt als de tabelnaam tijdens het maken van de database.

Onze klasse zal erven van het basismodel, dat een geconfigureerde declaratieve basis is. Daarom hoeven we de basis niet expliciet te definiëren zoals we zouden doen bij het gebruik van SQLAlchemy.

Referentie

Relaties: één op veel

    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 dit voorbeeld hebben we twee klassen, de klasse User en de klasse Post, de klasse User is onze ouder en de Post is onze post, omdat alleen berichten tot één gebruiker kunnen behoren, maar één gebruiker meerdere berichten kan hebben. Om dit te bereiken plaatsen we een buitenlandse sleutel op het kind dat verwijst naar de ouder, die uit ons voorbeeld komt, plaatsen we een externe sleutel in de Post-klasse om naar de gebruikersklasse te verwijzen. We gebruiken vervolgens relationship() op de bovenliggende waartoe we toegang hebben via ons SQLAlchemy-object db . Dat stelt ons dan in staat om te verwijzen naar een verzameling items die wordt vertegenwoordigd door de Post-klasse die ons kind is.

Om een bidirectionele relatie te creëren gebruiken we backref , hierdoor kan het kind naar de ouder verwijzen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow