Заводской шаблон приложения Flask инициализирует пустую базу данных, а не мою модель в Ubuntu

#python #sqlite #flask #server

#python #sqlite #flask #сервер

Вопрос:

Я хочу создать приложение flask, используя шаблон фабрики приложений, я хочу разделить свою логику и свои модели. Сервер запускается без ошибок, но после того, как я переношу свою базу данных, он создает пустую базу данных.

В настоящее время я использую ubuntu, в Windows он создает базу данных должным образом.

__init__.py:

 from flask import Flask, request, jsonify
from .extensions import db
from flask_migrate import Migrate

migrate = Migrate()


def create_app():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
    from .models import File
    db.init_app(app)
    migrate.init_app(app, db)

    return app
  

models.py :

 from .extensions import db

class File(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    audio_path = db.Column(db.String(255), unique=True)
    original_txt = db.Column(db.String(255), unique=True)
    corrected_txt = db.Column(db.String(255), unique=True)
    creation_date = db.Column(db.DateTime)

    def __repr__(self):
        return 'File %r' % self.audio_path
  

Расширения.py — это то, где я определяю свою базу данных SQLAlchemy:

 from flask_sqlalchemy import SQLAlchemy


db = SQLAlchemy()
  

Почему он не создает базу данных из моей модели?

Ответ №1:

это просто работает для меня:

вам нужно объявить db = SQLAlchemy() внутри models.py файл, не в файле расширений, а затем в файле init.py импортируйте базу данных из моделей, инициализируйте класс db с помощью: db.init_app(приложение). и migrate.init_app (приложение, БД).