sqlalchemy mixin,外键和关系

Omi*_*nus 5 python sqlalchemy

我在创建一个计划用于一堆sqlalchemy声明式类的简单mixin时遇到麻烦。基本思想是我想在多个表上存储一个创建/修改时间戳,并创建/修改用户。mixin位于其自己的文件(global_mixins.py)中,并且该类将导入每个需要mixin的模型文件中。当我运行数据导入时,代码下方出现错误。

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".)
Run Code Online (Sandbox Code Playgroud)

Omi*_*nus 3

这是一个操作顺序问题。我没有仔细阅读输出。基本上我试图在创建任何用户之前分配一个用户。