Gen*_*eep 0 flask python-3.x flask-sqlalchemy
你好你好,
我在我面临的错误上发现了类似的问题,并尝试了提供的解决方案,但它对我不起作用。
我试图将我的模型分离到不同的目录中并将它们导入到 app.py 中
当我尝试将数据库导入 python 终端时,我发现找不到应用程序。
应用程序.py代码
from flask import Flask
from flask_restful import Resource, Api
# from flask_sqlalchemy import SQLAlchemy
from routes import test, root, user
from models.todo import db
app = Flask(__name__)
api = Api(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://username:pass123@localhost/db'
app.config['SECRET_KEY'] = 'thiskeyissecret'
# db.init_app(app)
with app.app_context():
api = Api(app)
db.init_app(app)
api.add_resource(root.HelloWorld, '/')
api.add_resource(test.Test, '/test')
api.add_resource(user.User, '/user')
if __name__ == '__main__':
app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)
楷模
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Todo(db.Model):
__tablename__ = 'Todos'
id = db.Column('id', db.Integer, primary_key=True)
data = db.Column('data', db.Unicode)
def __init__(self, id, data):
self.id = id
self.data = data
def __repr__(self):
return '<Todo %>' % self.id
Run Code Online (Sandbox Code Playgroud)
我的文件目录看起来像
主应用程序
Flask-SQLAlchemy 需要一个活动的应用程序上下文。
\n\n尝试:
\n\nwith app.app_context():\n print(Todo.query.count())\nRun Code Online (Sandbox Code Playgroud)\n\n来自烧瓶文档:
\n\n\n\n上下文的目的
\n\nFlask 应用程序对象具有配置等属性,这些属性对于在视图和 CLI 命令中访问很有用。但是,在项目模块内导入应用实例很容易出现循环导入问题。使用应用工厂模式或编写可重用蓝图或扩展时,根本不会存在要导入的应用实例。
\n\nFlask 通过应用程序上下文解决了这个问题。您可以使用 current_app 代理,而不是直接引用应用程序,该代理指向处理当前活动的应用程序。
\n\nFlask 在处理请求时自动推送应用程序上下文。\n 查看函数、错误处理程序和在请求期间运行的其他函数将有权访问 current_app。
\n
| 归档时间: |
|
| 查看次数: |
11360 次 |
| 最近记录: |