结构化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 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 / .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')

以上是 结构化Flask-Restful API以使用SQLAlchemy 的全部内容, 来源链接: utcz.com/qa/425781.html

回到顶部