при звонке
Base = declarative_base()
SA создайте новый metadata
для этого Base
.
Для повторного использования ваших моделей вы должны привязать metadata
основных моделей к моделям многоразового использования, но перед любым импортом ваших моделей многократного использования:
Base.metadata = my_main_app.db.metadata
Классы MixIn полезны для повторения объявлений столбцов и расширения методов классов.
Для connecting
многократно используемых приложений, основанных на MixIns, вы должны определить конкретный класс в коде вручную для каждой модели.
Будет ли SQLAlchemy точно импортировать
внешние ключи от классов mixin?
класс MixIn с внешним ключом и ограничением
from sqlalchemy.schema import UniqueConstraint
from sqlalchemy.ext.declarative import declared_attr
class MessageMixIn(object):
ttime = Column(DateTime)
@declared_attr
def sometable_id(cls):
return Column(Integer, ForeignKey('sometable.id'))
@declared_attr
def __table_args__(cls):
return (UniqueConstraint('sometable_id', 'ttime'), {})