Ошибка «Приложение не найдено» при создании базы данных SQLite через Python Flask - PullRequest
0 голосов
/ 07 ноября 2018

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

Вот фрагмент из файла __init__.py из моего внутреннего пакета.

from flask_sqlalchemy import SQLAlchemy
from flask import Flask
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
from flask_mail import Mail
from backend.config import Config

db = SQLAlchemy()
bcrypt = Bcrypt()
login_manager = LoginManager()
login_manager.login_view = 'login'
login_manager.login_message_category = 'info'
mail = Mail()

def create_app():
    app = Flask(__name__)
    app.config.from_object(Config)

    db.init_app(app)
    bcrypt.init_app(app)
    login_manager.init_app(app)
    mail.init_app(app)

    from backend.users.routes import users
    from backend.stats.routes import stats
    from backend.queues.routes import queues
    app.register_blueprint(users)
    app.register_blueprint(stats)
    app.register_blueprint(queues)

    return app

Вот фрагмент из моего основного файла run.py.

from backend import create_app

app = create_app()

if __name__ == '__main__':
    app.run(host = '127.0.0.1', port = 80, debug = True)

Конфигурация приложения ссылается на SQLALCHEMY_DATABASE_URI как 'sqlite: ///site.db'.

Я пытался протолкнуть приложение через app_context. Я попытался создать таблицы базы данных в ней (честно говоря, я попробовал буквально все обходные пути, которые я мог найти через Интернет). Есть ли у кого-нибудь какие-либо предложения относительно того, как я могу решить эту проблему (кроме создания таблиц вручную - выполнение этого работает, но не представляется долгосрочным решением).

Как краткое примечание, вот ошибка, которую я получаю.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Rachit Bhargava\AppData\Local\Programs\Python\Python37-32\lib\site-packages\flask_sqlalchemy\__init__.py", line 963, in create_all
    self._execute_for_all_tables(app, bind, 'create_all')
  File "C:\Users\Rachit Bhargava\AppData\Local\Programs\Python\Python37-32\lib\site-packages\flask_sqlalchemy\__init__.py", line 940, in _execute_for_all_tables
    app = self.get_app(app)
  File "C:\Users\Rachit Bhargava\AppData\Local\Programs\Python\Python37-32\lib\site-packages\flask_sqlalchemy\__init__.py", line 912, in get_app
    'No application found. Either work inside a view function or push'
RuntimeError: No application found. Either work inside a view function or push an application context. See http://flask-sqlalchemy.pocoo.org/contexts/.

1 Ответ

0 голосов
/ 07 ноября 2018

Вам необходимо предоставить контекст приложения для конструктора SqlAlchemy. from run import app db = SQLAlchemy(app)

...