Szukaj…


Wprowadzenie

Flask-SQLAlchemy to rozszerzenie Flask, które dodaje obsługę popularnego SQLAlchemy SQLAlchemy do mapowania obiektów w Pythonie. Ma na celu uproszczenie SQLAlchemy za pomocą Flask, zapewniając pewne domyślne implementacje typowych zadań.

Instalacja i przykład początkowy

Instalacja

pip install Flask-SQLAlchemy

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

Powyższy przykład kodu pokazuje prosty model Flask-SQLAlchemy, możemy dodać opcjonalną tablename do deklaracji modelu, jednak często nie jest to konieczne, ponieważ Flask-SQLAlchemy automatycznie użyje nazwy klasy jako nazwy tabeli podczas tworzenia bazy danych.

Nasza klasa odziedziczy po modelu klasy bazowej, który jest skonfigurowaną bazą deklaratywną, dlatego nie ma potrzeby jawnego definiowania bazy, tak jak robilibyśmy to podczas korzystania z SQLAlchemy.

Odniesienie

Relacje: jeden do wielu

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

W tym przykładzie mamy dwie klasy: klasę użytkownika i klasę postu, klasa użytkownika będzie naszym rodzicem, a post będzie naszym postem, ponieważ tylko post może należeć do jednego użytkownika, ale jeden użytkownik może mieć wiele postów. Aby to osiągnąć, umieszczamy klucz obcy na dziecku odwołującym się do rodzica, który jest z naszego przykładu, umieszczamy klucz obcy na klasie Post w celu odniesienia do klasy użytkownika. Następnie używamy relationship() na obiekcie nadrzędnym, do którego uzyskujemy dostęp za pośrednictwem naszej bazy danych SQLAlchemy obiektu db . To pozwala nam odwoływać się do kolekcji przedmiotów reprezentowanych przez klasę Post, która jest naszym dzieckiem.

Aby utworzyć dwukierunkową relację, używamy backref , pozwoli to dziecku na odwołanie się do rodzica.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow