繁体   English   中英

Flask-SQLAlchemy,“应用程序未在数据库上注册”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM