小编Cop*_*cus的帖子

在Flask SQLAlchemy中创建数据库

我正在使用Flask-SQLAlchemy构建一个Flask应用程序,并且试图编写一个无需运行主应用程序即可创建Sqlite3数据库的脚本。为了避免循环引用,我已经在单独的模块中初始化了Flask应用程序主对象和SQLAlchemy数据库对象。然后,在运行该应用程序时,我将其导入并合并到第三个文件中。当我运行应用程序时,这可以很好地工作,因为数据库已构建,并且在创建行和查询行时可以正常运行。但是,当我尝试将它们导入另一个模块时,出现以下错误:

RuntimeError: application not registered on db instance and no applicationbound to current context
Run Code Online (Sandbox Code Playgroud)

我的代码如下所示:

root / create_database.py

from application.database import db
from application.server import app

db.init_app(app)

db.create_all()
Run Code Online (Sandbox Code Playgroud)

根/run.sh

export FLASK_APP=application/server.py
flask run
Run Code Online (Sandbox Code Playgroud)

root /应用程序/ init .py

from database import db
from server import app

db.init_app(app)    

from routes import apply_routes   
apply_routes(app)
Run Code Online (Sandbox Code Playgroud)

根目录/应用程序/数据库.py

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
Run Code Online (Sandbox Code Playgroud)

根/应用程序/ server.py

from flask import Flask
import os
app = Flask(__name__)

path = os.path.dirname( os.path.realpath(__file__) )
database_path = os.path.join(path, '../mydb.sqlite')

app.config['SQLALCHEMY_DATABASE_URI'] …
Run Code Online (Sandbox Code Playgroud)

python flask flask-sqlalchemy

2
推荐指数
1
解决办法
8836
查看次数

标签 统计

flask ×1

flask-sqlalchemy ×1

python ×1