When you call
Base = declarative_base()
SA create a new metadata for this Base .
To reuse your models, you must bind the metadata main models to reusable models, but before any import of your reusable models:
Base.metadata = my_main_app.db.metadata
MixIn classes are useful for repeating column declarations and extending class methods. For connecting applications for reuse based on MixIns, you must define a specific class in the code manual for each model.
Will SQLAlchemy accurately import foreign keys from mixin classes?
MixIn class with foreign key and constraint
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'), {})
source share