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