小编Raz*_*yed的帖子

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

之后我创建了如下测试:

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

它工作正常.但我真正想要的是存储多个具有相同值的主题,所以我尝试了以下测试:

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')] …
Run Code Online (Sandbox Code Playgroud)

python orm sqlalchemy pyramid

2
推荐指数
1
解决办法
1463
查看次数

标签 统计

orm ×1

pyramid ×1

python ×1

sqlalchemy ×1