Форум сайта python.su
0
Задача такая:
имеется веб приложение на фласке.
Обычно орм определяется а модуле аппликейшена и импортируется в модуле моделей:
app/__init__.py
app = Flask(__name__) # Configurations app.config.from_object('config') db = SQLAlchemy(app) from app import views, models
from app import db class Country(db.Model): id = db.Column(db.String(2), primary_key=True) iso2code = db.Column(db.String(2), unique=True) iso3code = db.Column(db.String(3), unique=True) name = db.Column(db.String(64)) capital = db.Column(db.String(64))
Офлайн
568
Один из краеугольных камней объектно-ориентированного программирования - наследование. Почему вы не хотите сделать базовый класс и наследовать его вместо db.Model? Там у вас будет stlf.db.
Офлайн
0
Возможно я не совсем понятно описал что хочу.
Я бы хотел написать отдельный пакет, который не будет привязан к flask_sqlalchemy, только к sqlalchemy.
Но в приложении используется flask_sqlalchemy, поэтому нужно както использовать в нем модели из моего пакета.
Извините за неразбериху в первом посте.
Сейчас импортируется уже готовый объект из app/__init__:
from flask.ext.sqlalchemy import SQLAlchemy ... app.config.from_object('config') db = SQLAlchemy(app)
Офлайн
568
katb
По сути, я бы мог в models.py импортировать flask.ext.sqlalchemy import SQLAlchemy
но я не хочу использовать flask для этих моделей

Офлайн
0
FishHookПроблема в том, что flask_sqlalchemy не будет работаеть с моделями sqlalchemy
ну импортируйте другой модуль, в чем проблема то?

Отредактировано katb (Май 21, 2015 18:39:20)
Офлайн
39
katb
Да какие там возможности у flask-sqlalchemy. Их там почти нет. Уже давно использую чистую алхимию без этой мутной обвязки
Если Вы хотите использовать отдельно модели, которые написаны с наследованием от flask-sqlalchemy и модели чистой sqlalchemy, то Вам придется написать самостоятельный коннектор к ним через scooped_session (создавать еще один объект сессии). Можно попробовать обмануть flask-sqlalchemy но мне лень было ковыряться (проще было добавить 5 строк кода). В итоге для Вас самым простым решением будет выпиливание из Вашего проекта flask-sqlalchemy.
P.S. В этом случае можно использовать единый коннектор да и не потеряете Вы практически ничего.
Отредактировано 4kpt_III (Май 21, 2015 19:07:37)
Офлайн
0
Спасибо за отклик.
Уже выпилил flask-alchemy 
Офлайн