在python解释器中访问Flask db

在python解释器中访问Flask db,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,我有一个具有以下结构的running Flask应用程序: myproject/ myapp.py models.py 我可以在本地运行该应用程序,也可以在调试器中访问它(Pycharm供好奇者使用)。我无法在python解释器中启动db实例,我需要能够访问要调试的工作对象 下面是我在翻译中所做的 import sys sys.path.append('/path/to/myproject/') from flask import Flask from flask_sqlalc

我有一个具有以下结构的running Flask应用程序:

myproject/
    myapp.py
    models.py
我可以在本地运行该应用程序,也可以在调试器中访问它(Pycharm供好奇者使用)。我无法在python解释器中启动db实例,我需要能够访问要调试的工作对象

下面是我在翻译中所做的

import sys
sys.path.append('/path/to/myproject/')
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
from models import db, User, Post
app = Flask('myapp')
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/mydb'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
我可以调用类用户并发布。但是,如果我尝试使用
query
来访问底层数据库,比如说
User.query.all()
,我就得到了

RuntimeError:应用程序未在db实例上注册,并且没有绑定到当前上下文的应用程序


为了让解释器能够访问从myapp.py运行时发现的数据库,需要做些什么?我不认为我需要我正在使用的所有语句,但我正在努力找到正确的魔术词序列,以使解释器像我的IDE一样工作。

基于

特别是,

两者的区别在于,在第一种情况下,方法如下 create_all()和drop_all()将一直有效,但只在第二分钟有效 案例a flask.flask.app_context()必须存在

您能否确保您处于具有的应用程序上下文中

with app.app_context():
    ...

我也看到了上下文处理程序。但是,我认为需要在上下文处理程序中运行整个会话的想法对我来说是非常错误的。此外,对它的实验表明,
p=Post.query.first()
只返回一个类,没有来自数据库的数据,因此同样缺少数据库连接似乎仍然是问题所在……不过,感谢您的想法。