Я недавно изучал python и практиковал несколько учебных пособий, и все шло хорошо, пока я не разделил свое приложение на подмодули, чтобы упростить обслуживание с использованием чертежей, после этого приложение упало и выдало следующую ошибку: OperationalError: (sqlite3.OperationalError) нет такой таблицы, вот как я делю свое приложение:
-instance
-flask.cfg
-app
- static // Folder for css
- templates // Folder for common html files
-__init__.py // to init the app
-module1
-__init__.py // to register module blueprint
-subModule1
-subModule1 Group1
-templates
-htmls files
-__init__.py file //to register group1 blueprint
-Group1Form
-Group1Model
-Group1View
-subModule1 Group2
-templates
-htmls files
-__init__.py file //to register group2 blueprint
-Group2Form
-Group2Model
-Group2View
-subModule2
....
-main.py
Приложение работает нормально, когда я использую flask run
, но у меня возникает проблема, когда я использую db.session.add()
метод за исключением того, что таблица не найдена. Я пробовал много решений этой проблемы, но не повезло. Вот несколько ссылок на ту же проблему:
OperationalError: (sqlite3.OperationalError) нет такой таблицы: user
https://flask -sqlalchemy.palletsprojects. com / en / 2.x / quickstart /
Python sqlite3.OperationalError: нет такой таблицы:
'Приложение не найдено. Либо работайте внутри функции просмотра, либо передавайте контекст приложения. '
Вот файл flask.cfg:
import os
BASEDIR = os.path.abspath(os.path.dirname(__file__))
SECRET_KEY = os.urandom(32)
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.abspath('app.db')
А вот как я инициализирую приложение восновной __init__.py
файл:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app(config_filename=None):
app = Flask(__name__, instance_relative_config=True)
app.config.from_pyfile(config_filename)
initialize_extensions(app)
register_blueprints(app)
def create_app(config_filename=None):
app = Flask(__name__, instance_relative_config=True)
app.config.from_pyfile(config_filename)
initialize_extensions(app)
register_blueprints(app)
return app
def initialize_extensions(app):
db.init_app(app)
with app.app_context():
db.create_all()
def register_blueprints(app):
from app.module1.config.university import university_blueprint
app.register_blueprint(university_blueprint)
from app.module1.config.department import department_blueprint
app.register_blueprint(department_blueprint)
from app.module1.authors.author import author_blueprint
app.register_blueprint(author_blueprint)
from app.module1.authors.publications import publications_blueprint
app.register_blueprint(publications_blueprint)