Заявленные модели не применяются в моей существующей базе данных в Flask - PullRequest
1 голос
/ 22 апреля 2020

Я создал модель с именем User в моем файле models.py, также я включил функцию отслеживания в моем приложении Flask, но затем, когда я добавляю таблицу последователей в мой файл models.py, то же самое не получается отражено или применено в моем файле site.db, где хранится база данных. Я получаю сообщение об ошибке sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: followers

Вот мой файл models.py

followers = db.Table('followers',
    db.Column('follower_id', db.Integer, db.ForeignKey('user.id')),
    db.Column('followed_id', db.Integer, db.ForeignKey('user.id'))
)

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)

    followed = db.relationship(
        'User', secondary=followers,
        primaryjoin=(followers.c.follower_id == id),
        secondaryjoin=(followers.c.followed_id == id),
        backref=db.backref('followers', lazy='dynamic'), lazy='dynamic')

Я тоже использовал команды flask db -migrate и flask db upgrade, но затем эта ошибка все равно выдается.

Как применить эти изменения в моей базе данных?

1 Ответ

0 голосов
/ 22 апреля 2020

Вы должны инициализировать / создать таблицы сначала для followers. Прочитайте статью Создание базы данных в официальной документации Flask :

. Для таких систем требуется схема, которая указывает им, как хранить эту информацию. Поэтому перед первым запуском сервера важно создать эту схему.

Вот пример Flask использования сценария схемы SQL для создания базы данных, таблиц и т. Д. c:

sqlite3 /tmp/flaskr.db < schema.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...