因此,我尝试使用Flask-Restful创建一个API,但是我发现的所有示例都将所有内容都放在一个app.py文件中。我在Flask-Restful文档中找到了解释如何构造API的信息,但其中不包含使用数据库的任何内容。我已经发布了我想出的东西,并且如果我对一些数据进行硬编码,它也可以工作,但是当我将导入db到时users.py,会出现错误ImportError: cannot import name 'db'。那么,构造API以便从数据库引入数据的最佳方法是什么?
db
users.py
ImportError: cannot import name 'db'
结构体
myapi run.py api __init__.py resources __init__.py user.py myapi / run.py from api import app app.run()
myapi / init.py
from flask import Flask from flask.ext.restful import Api from flask.ext.sqlalchemy import SQLAlchemy from api.resources.user import User app = Flask(__name__) app.debug = True app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/myapi' api = Api(app) db = SQLAlchemy(app) api.add_resource(User, '/user')
../resources/user.py
from flask.ext.restful import Resource from api import db class User(Resource, db.Model): def get(self): return {'class': 'user', 'first': 'john', 'last': 'doe'}
将资源/模型导入移动到分配db变量的下面(因为这些模块/脚本依赖于已经实例化的数据库):
myapi / api / init.py
from flask import Flask from flask.ext.restful import Api from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.debug = True app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://localhost/myapi' api = Api(app) db = SQLAlchemy(app) from api.resources.user import User api.add_resource(User, '/user')