Sqlalchemy mixin, foreignkey and attitude

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): #will eventually return user id if logged in or a generic system user. return 1 Error(DETAIL: Key (create_user_id)=(1) is not present in table "tg_user".) 
+4
source share
1 answer

It was an order of operations. I did not read the results very carefully. Basically, I tried to assign a user before any users were created.

+2
source

Source: https://habr.com/ru/post/1395300/


All Articles