Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 5, 2014 20:20:32

vax
Зарегистрирован: 2014-12-05
Сообщения: 10
Репутация: +  1  -
Профиль   Отправить e-mail  

Flask + SQLalchemy (declarative)

Добрый вечер!
Уже неделю думаю, над вопросом, как в приложение на Flask красиво вписать SQLalchemy в declarative режиме. С declarative самим по себе вроде всё понятно, с Flask-ом тоже, хотя я его только изучаю. Но вот паттерн создания объекта app, передачи ему конфига, и передачи этого же конфига для создания engine базы данных. Есть на примете идея, но это явно плохой стиль, потому и обращаюсь за помощью.
Чтобы не быть абстрактным, применительно к этому примеру:
https://github.com/miguelgrinberg/flasky

И интересно узнать, насколько часто declarative применяется в продакшене).



Python 3.4 Lover:)

Офлайн

#2 Дек. 5, 2014 20:35:31

alchemist
Зарегистрирован: 2014-11-12
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask + SQLalchemy (declarative)

Нормально никак.

Вот есть тикет которий уже год закрить не могут и там вначале пример как использовать.

https://github.com/mitsuhiko/flask-sqlalchemy/issues/98


Если без flask-sqlalchemy

from sqlalchemy.orm import scoped_session
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from ..config import config
from model import User
from model import *
engine = create_engine(config.DATABASE, **config.DATABASE_ENGINE_CONFIG)
Session = sessionmaker(autocommit=False, autoflush=False, bind=engine)
db = scoped_session(Session)
@app.teardown_request
def shutdown_session(exception=None):
    db.remove()

Офлайн

#3 Дек. 5, 2014 23:15:18

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Flask + SQLalchemy (declarative)

Я, к слову, тоже работаю с базами похожим на предложенный alchemist образом. Только подключение к б.д. делаю в run. А так идентично практически. Ну и не @app.teardown_request а @app.teardown_context.

Отредактировано 4kpt_II (Дек. 5, 2014 23:15:42)

Офлайн

#4 Дек. 11, 2014 19:53:38

vax
Зарегистрирован: 2014-12-05
Сообщения: 10
Репутация: +  1  -
Профиль   Отправить e-mail  

Flask + SQLalchemy (declarative)

Спасибо большое!



Python 3.4 Lover:)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version