具有多模块应用程序OperationalError的Python烧瓶:(sqlite3.OperationalError)没有此类表

我最近一直在学习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) no such table: user

https://flask-sqlalchemy.palletsprojects.com/en/2.x/quickstart/

Python sqlite3.OperationalError: no such table:

'No application found. Either work inside a view function or push an application context.'

这是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)
chahu2008 回答:具有多模块应用程序OperationalError的Python烧瓶:(sqlite3.OperationalError)没有此类表

您是否可以在app.app_context()函数内移动db.init_app()

    with app.app_context():
        db.init_app()
,

我想出了这个问题,我想去解决这个问题:

with app.app_context(): db.create_all()

注册蓝图后

本文链接:https://www.f2er.com/3121005.html

大家都在问