gpt4 book ai didi

python - flask -SQLAlchemy, "Application not registered on db"

转载 作者:行者123 更新时间:2023-11-29 13:25:39 25 4
gpt4 key购买 nike

我在一台机器上运行了以下 Flask 应用程序:

app.py

from flask import Flask
from aves.extensions import db

def create_app(config_object=DevConfig):
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@localhost/dbname'
register_extensions(app)
return app

def register_extensions(app):
db.init_app(app)

query = "SELECT * FROM score LIMIT 50;"
result = db.engine.execute(query)
print(list(result))

return None

extensions.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

现在,我使用 pgAdmin 的备份功能导出了我的数据库,并再次将其导入到新机器上。我尝试运行相同的代码,但现在出现以下错误:

RuntimeError:应用程序未在数据库实例上注册并且没有应用程序绑定(bind)到当前上下文

我之前让数据库在新机器上运行,然后我在另一台机器上处理了一段时间的代码,现在我在新机器上再次尝试它不起作用(也许它仍然以某种方式绑定(bind)到旧数据库还是什么?)。

当我尝试像下面这样的简单脚本并运行它时,它工作正常。

test_db_connection.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@localhost/dbname'
db = SQLAlchemy(app)

query = "SELECT * FROM score LIMIT 50;"
result = db.engine.execute(query)
print(list(result))

最佳答案

我通过将以下行添加到 app.py 使其运行:with app.app_context():

def create_app(config_object=DevConfig):
app = Flask(__name__)
with app.app_context():
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://user:password@localhost/dbname'
register_extensions(app)
return app

关于python - flask -SQLAlchemy, "Application not registered on db",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34371811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com