SqlAlchemy中association object设置问题

    技术2022-05-19  17

    在使用association object设置的时候,要注意在relation设置中把cascade设置为casacade="all delete-orphan",这里关键的是delete-orphan,否则在删除association object后,关联的两个类并未把其标记为删除,如果这时候再对关联类进行删除操作,就会出现Dependency rule tried to blank-out primary key column的错误。 例子: class User(Base):     __tablename__ = 'users'     id = Column(Integer, primary_key=True)     name = Column(String(30), nullable=False, unique=True)     password = Column(String(30), nullable=False)     email = Column(String(75), nullable=False, unique=True)         def __init__(self, name, password, email):         self.name = name         self.password = password         self.email = email   class GamePlayer(Base):     __tablename__ = 'game_player'     user_id = Column(Integer, ForeignKey('users.id'), primary_key=True)     room_id = Column(Integer, ForeignKey('game.id'), primary_key=True)     user = relationship(User, backref=backref('game_play', uselist=False, cascade='all, delete-orphan'))     is_host = Column(Boolean, default=False)     is_questioner = Column(Boolean, default=False)         def __init__(self, user):         self.user = user     class Game(Base):     __tablename__ = 'game'     id = Column(Integer, primary_key=True)     name = Column(String(30), nullable=False)     state = Column(String(10), default='准备')     create_time = Column(DateTime, default=datetime.now)     player_list = relationship(GamePlayer, backref="game", lazy='dynamic', cascade='all, delete-orphan')


    最新回复(0)