![](/img/trans.png)
[英]Reflecting tables with Flask-SQLAlchemy raises RuntimeError: application not registered
[英]Flask-SQLAlchemy, “Application not registered on db”
我在一台机器上运行以下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: application not registered on db instance and no application bound to current context
我之前在新计算机上运行过数据库,然后在另一台计算机上使用了一段时间的代码,现在我在新计算机上再次尝试了它,但是它不起作用(也许它仍旧与旧计算机绑定了)数据库或其他内容?)。
当我尝试以下简单脚本并运行它时,它可以正常工作。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.