все. Я пишу проект, используя Flask, SQLAlchemy и Connexion. До реализации подключения все работает успешно (p.s., когда приложение создано как app = Flask(__name__)
. После реализации подключения возникает исключение:
'SQLALCHEMY_DATABASE_URI' not in app.config and AttributeError: 'FlaskApp' object has no attribute 'config'
. Так где же ошибка? Помогите, пожалуйста.
run.py:
from app import create_app
app = create_app('development')
if __name__ == '__main__':
app.run()
приложение:
...
from settings import app_config
db = SQLAlchemy()
def create_app(config_name):
# app = Flask(__name__)
app = connexion.App(__name__)
app.add_api('swagger.yml')
application = app.app
application.config.from_object(app_config[config_name])
application.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
return app
settings.py
class BaseConfig(object):
DEBUG = False
CSRF_ENABLED = True
SECRET = os.getenv('SECRET', 'default_secret_key')
DEFAULT_URI = 'postgresql://shooter:shooter@localhost/shooterstats'
SQLALCHEMY_DATABASE_URI = DEFAULT_URI
class DevelopmentConfig(BaseConfig):
DEBUG = True
Здесь произошла ошибка db.init_app(app)
. Я изменил его на db.init_app (application), и теперь он работает успешно.
Вот один из способов настроить приложение Flask с помощью Connexion.
import connexion
# This creates the connexion application instance.
connexion_app = connexion.App(__name__)
# This gets the underlying Flask app instance.
flask_app = connexion_app.app # Flask(__name__)
?
Почему это работает? Честно говоря, я не понимаю, и поэтому ваш комментарий также не так полезен, как должен. Не могли бы вы добавить точную аргументацию?