使用Flask-Restful从应用上下文获取数据库连接
我有一个使用 Flask-Restful 的应用程序,但我不知道怎么从应用程序上下文中获取数据库连接信息。
这是我目前的代码:
app.py:
....
from flask.ext.restful import reqparse, abort, Api, Resource
app = Flask(__name__)
app.config['DATABASE'] = 'my.db'
api = Api(app)
api.add_resource(Foo, '/')
foo.py
...
from flask.ext.restful import Resource
class Foo(Resource):
def __init__(self):
self.db = get_db()
def post(self):
do_stuff_with_db()
我希望 get_db 方法看起来像这样:
def get_db():
return database.connect(app.config['DATABASE'])
问题是为了在 foo.py 中获取 app.config,我创建了一个循环引用。这有没有什么简单的方法,最好是符合常规做法的方式来解决这个问题呢?
我看到过 这个问题,但给出的解决方案并没有真正解决循环导入的问题。
1 个回答
1
对于我的项目,我使用了这样的结构:
application/__init__.py
...
app = Flask(__name__)
...
db = SQLAlchemy(app) #because I use sqlalchemy
...
import application.core
application/core.py
from application.api import resource
...
# api definition
application/api/resource.py
from application import db
...
db.doWhatEverYouWant()
...
这结构肯定不是完美的,但我没有遇到那种循环导入的问题。