用Flask初始化数据库

时间:2020-04-16 13:07:09

标签: python flask sqlalchemy

我有以下代码:

初始化 .py:

"""Initialize app."""
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()


def create_app():
    """Construct the core application."""
    app = Flask(__name__, instance_relative_config=False)

    app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'

    app.config['RECAPTCHA_PUBLIC_KEY'] = '6LcmEeoUAAAAAIbdhgkFBvz676UCRJMjnSx8H6zy'
    app.config['RECAPTCHA_PARAMETERS'] = {'size': '100%'}

    db.init_app(app)

    # blueprint for auth routes in our app
    from .auth import auth as auth_blueprint
    app.register_blueprint(auth_blueprint)

    # blueprint for non-auth parts of app
    from .__main__ import main as main_blueprint
    app.register_blueprint(main_blueprint)

    with app.app_context():
        # Import parts of our application
        from . import routes

        return app

然后我尝试使用以下代码初始化数据库:

from realProject import db, create_app
db.create_all(app=create_app())

所有脚本都在realProject文件夹中 但是当尝试编译最后的代码时,出现此错误:

ModuleNotFoundError: No module named 'realProject'

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您需要遵循以下结构:

|__project_name 
     |__app.py                    ----------> The main file from where you run your app 
     |__app     -----> This is the app folder
        ├── templates
        │   └── index.html
        └── __init__.py             -----------> The __init__.py should be inside the app folder for it to be imported
        └── routes.py

然后在您的主文件中执行此操作:

from app import db, create_app

db.create_all(app=create_app())