많은 한 나는 다음과 같은 데이터가 있습니다SQLAlchemy의 많은 대 한
CREATE TABLE `groups` (
`bookID` INT NOT NULL,
`groupID` INT NOT NULL,
PRIMARY KEY(`bookID`),
KEY(`groupID`)
);
기본적으로 책 (bookID로서, 이름, ...)이 책 테이블,하지만 그룹 ID없이합니다. 책을 삽입 할 때 groupID가 무엇인지 결정할 방법이 없습니다.
나는 이것을 sqlalchemy에서 원한다. 그래서 나는 book.bookID = groups.bookID에 그룹들과 합쳐진 책들로 Book을 매핑하려고 시도했다.
나는 다음과 같은 제작 :tb_groups = Table('groups', metadata,
Column('bookID', Integer, ForeignKey('books.bookID'), primary_key=True),
Column('groupID', Integer),
)
tb_books = Table('books', metadata,
Column('bookID', Integer, primary_key=True),
tb_joinedBookGroup = sql.join(tb_books, tb_groups, \
tb_books.c.bookID == tb_groups.c.bookID)
을 다음과 같은 매퍼 정의 :
mapper(Group, tb_groups, properties={
'books': relation(Book, backref='group')
})
mapper(Book, tb_joinedBookGroup)
...
이그러나, 나는이 코드 조각을 실행할 때, 나는 각각의 실현을 book 객체는 목록 인 필드 그룹을 가지며 각 그룹 객체는 단 하나의 assigment 인 books 필드를 갖습니다. 나는 여기서 나의 정의가 sqlalchemy가 many-to-one 대 one-to-many 관계에 대해 혼란을 야기 시켰음에 틀림 없다고 생각한다.
누군가이를 해결할 수 있습니까?
내 원하는 목표는 :
g.books = [b, b, b, .. ]
book.group = g
g 그룹의 인스턴스입니다
, b는 책의 인스턴스입니다.
또한 tb_groups.bookID가 기본 키가 아닌 경우이 문제를 해결할 수있는 방법이 있습니까? – crapbag