1

与此问题相关:SQLAlchemy logging of changes with date and user

我正在使用“配方”的修改版本来自动更改版本。我认为它已经能够处理某些形式的关系(虽然不确定),但我无法处理单独表中存在多对多关系的情况。

这是一个有问题的简单示例:

from history_meta import (Versioned, versioned_session)

Base = declarative_base()

user_to_group = Table('user_to_group', Base.metadata,
    Column('user_login', String(60), ForeignKey('user.login')),
    Column('group_name', String(100), ForeignKey('group.name'))
)

class User(Versioned, Base):
    __tablename__ = 'user'
    login = Column(String(60), primary_key=True, nullable=False)
    password = Column(BINARY(20), nullable=False)

class Group(Versioned, Base):
    __tablename__ = 'group'
    name = Column(String(100), primary_key=True, nullable=False)
    description = Column(String(100), nullable=True)
    users = relationship(User, secondary=user_to_group, backref='groups')

Base.metadata.create_all(engine)我生成数据库中的表时,可以看到只有5个表:user、group、user_to_group、user_history和group_history 没有user_to_group_history。

“版本控制”通过继承添加到声明性对象中Versioned,但没有办法(我可以看到)对user_to_group不使用声明性格式的表做类似的事情。文档中也有注释说使用映射到类的表不是一个好主意,所以我试图避免对关系使用声明性对象。

4

0 回答 0