访问python解释器

时间:2016-08-20 20:56:28

标签: python flask flask-sqlalchemy

我有一个正在运行的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)

我可以调用User和Post类。但是,如果我尝试使用query来访问基础数据库,请说User.query.all(),我会得到

  

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

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

1 个答案:

答案 0 :(得分:1)

基于http://flask-sqlalchemy.pocoo.org/2.1/api/

的文档

特别是

  

两者之间的区别在于第一种情况下的方法   create_all()和drop_all()将一直工作,但在第二个   case a flask.Flask.app_context()必须存在。

您能否确保使用

进入应用环境
with app.app_context():
    ...

http://flask.pocoo.org/docs/0.11/api/#flask.Flask.app_context