I am having trouble creating a simple mixin that I plan to use on a bunch of declarative sqlalchemy classes. The main idea is that I want to create a create / modify timestamp and create / modify a user stored on multiple tables. Mixin is located in its own file (global_mixins.py), and the class is imported into each model file for which mixin is required. When I start data import, I get an error below the code.
class TimeUserMixin(object): create_time = Column(DateTime,default=datetime.datetime.now,nullable=False) modify_time = Column(DateTime,default=datetime.datetime.now, onupdate=datetime.datetime.now,nullable=False) @declared_attr def create_user_id(cls): return Column(Integer,ForeignKey('tg_user.user_id'), default=cls.get_user_id,nullable=False) @declared_attr def modify_user_id(cls): return Column(Integer,ForeignKey('tg_user.user_id'), default=cls.get_user_id,onupdate=cls.get_user_id,nullable=False) @declared_attr def create_user(cls): return relation('User',primaryjoin='%s.create_user_id == User.user_id'%cls.__name__) @declared_attr def modify_user(cls): return relation('User',primaryjoin='%s.modify_user_id == User.user_id'%cls.__name__) @classmethod def get_user_id(cls):
source share