Получение подключения к базе данных из контекста приложения с помощью 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'])

Проблема в том, чтобы загрузить app.config в foo.py, я создаю круговую ссылку. Есть ли чистый и, надеюсь, идоматический способ получить это?

Я видел этот вопрос, но данное решение фактически не решает проблему циклического импорта.


person munk    schedule 19.08.2014    source источник
comment
Ссылка, которой вы поделились, указывает не на то место.   -  person dirn    schedule 19.08.2014
comment
Исправил ссылку, спасибо @dirn   -  person munk    schedule 19.08.2014


Ответы (1)


Что ж, для своего проекта я использую такую ​​структуру:

приложение / __ init__.py

...
app = Flask(__name__)
...
db  = SQLAlchemy(app) #because I use sqlalchemy
...
import application.core 

приложение / core.py

from application.api import resource
...
# api definition

приложение / api / resource.py

from application import db
...
db.doWhatEverYouWant()
...

Это конечно не идеально, но у меня нет таких проблем с циклическим импортом.

person Dragu    schedule 19.08.2014