Поиск…


Вступление

Flask-SQLAlchemy - это расширение Flask, которое добавляет поддержку популярных приложений SQLAlchemy для объектных реплик Python (ORM) в приложения Flask. Он направлен на упрощение SQLAlchemy с помощью Flask, предоставляя некоторые стандартные реализации общих задач.

Установка и начальный пример

Монтаж

pip install Flask-SQLAlchemy

Простая модель

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)

В приведенном выше примере кода показана простая модель Flask-SQLAlchemy, мы можем добавить необязательное имя табуляции к объявлению модели, но часто не обязательно, поскольку Flask-SQLAlchemy будет автоматически использовать имя класса в качестве имени таблицы во время создания базы данных.

Наш класс будет наследовать от базовой модели, которая является сконфигурированной декларативной базой, поэтому нам не нужно явно определять базу, как при использовании SQLAlchemy.

Ссылка

Отношения: от одного до многих

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

В этом примере у нас есть два класса класса User и класс Post, класс User будет нашим родителем, и Post будет нашим сообщением, поскольку только сообщение может принадлежать одному пользователю, но один пользователь может иметь несколько сообщений. Чтобы добиться этого, мы помещаем внешний ключ на ребенка, ссылаясь на родителя, который из нашего примера помещает внешний ключ в класс Post для ссылки на класс User. Затем мы используем relationship() для родителя, к которому мы обращаемся через наш объект SQLAlchemy db . Это позволяет нам ссылаться на коллекцию предметов, представленных классом Post, который является нашим ребенком.

Чтобы создать двунаправленную связь, мы используем backref , это позволит ребенку ссылаться на родителя.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow