2
我創建了許多與SQLAlchemy的許多關係是這樣的:SQLAlchemy的多對多映射使用額外字段
subject_books = Table('subject_books', Base.metadata,
Column('subject_id', Integer, ForeignKey('subjects.id')),
Column('book_id', Integer, ForeignKey('books.id')),
Column('group', Integer)
)
class Subject(Base):
__tablename__ = 'subjects'
id = Column(Integer, primary_key=True)
value = Column(Unicode(255), unique=True)
class Book(Base):
__tablename__ = 'books'
id = Column(Integer, primary_key=True)
title = Column(Unicode(255))
isbn = Column(Unicode(24))
subjects = relationship('Subject', secondary=subject_books, collection_class=attribute_mapped_collection('group'), backref='books')
之後,我創建了一個測試類似以下內容:
book = Book(title='first book',isbn='test')
book.subjects[0] = Subject(value='first subject')
book.subjects[1] = Subject(value='second subject')
session.add(book)
transaction.commit()
,它工作正常。但我真正想要的是存儲與同組值超過一個主題,所以我嘗試了以下測試:
book = Book(title='first book',isbn='test')
book.subjects[0] = [Subject(value='first subject'),Subject(value='second subject')]
book.subjects[1] = [Subject(value='third subject'),Subject(value='forth subject')]
session.add(book)
transaction.commit()
,但它不工作。
這可以使用sqlalchemy完成嗎?
由於提前
我認爲你所擁有的模型在數據庫層面表現良好。但是,按照您的意願使用簡單的方法......我不確定現成的解決方案,但您可以嘗試實施自己的自定義集合(請參閱http://www.sqlalchemy.org/docs /orm/collections.html?highlight=attribute_mapped_collection#custom-collection-implementations) – van