2010-04-11 5 views
0

데이터를 올바르게 매핑하기 위해 sqlalchemy를 사용하려고합니다. 통합 그룹은 기본적으로 그룹 그룹입니다. 하나의 unifiedGroup은 많은 그룹으로 매핑되지만 각 그룹은 하나의 ug로만 매핑 될 수 있습니다. 각 행은 ugID, GID 튜플이라고SQLAlchemy 매핑 문제

CREATE TABLE `unifiedGroups` (  
    `ugID` INT AUTO_INCREMENT, 
    `gID` INT NOT NULL, 
    PRIMARY KEY(`ugID`, `gID`), 
    KEY(`gID`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 
; 

참고 :

그래서 기본적으로이 내 unifiedGroups의 정의입니다. (나는 ugID마다 얼마나 많은 gID가 있는지 손에서 알지 못하기 때문에 이것은 아마도 가장 현명하고 간단한 방법 일 것입니다.) 내 UnifiedGroup 클래스

정의

class UnifiedGroup(object): 
    """UnifiedProduct behaves very much like a group 
    """ 
    def __init__(self, ugID): 
     self.ugID=ugID 

     #Added by mapping 
     self.groups=False 

    def __str__(self): 
     return '<%s:%s>' % (self.ugID, ','.join([g for g in self.groups])) 

이 내 매핑 테이블입니다 : 내가하려고 할 때, 그러나

mapper(UnifiedGroup, tb_unifiedGroups, properties={ 
    'groups': relation(Group, backref='unifiedGroup') 
}) 

: 다음과 같은 방법으로

tb_groupsInfo = Table('groupsInfo', metadata, 
    Column('gID', Integer, primary_key=True), 
    Column('gName', String(128)), 
) 

tb_unifiedGroups = Table('unifiedGroups', metadata, 
    Column('ugID', Integer, primary_key=True), 
    Column('gID', Integer, ForeignKey('groupsInfo.gID')), 
) 

내 매퍼지도 groupInstance.unifiedGroup을 수행하면 빈 목록 [], 이 표시됩니다. AttributeError : groupInstance.unifiedGroup.groups 나에게 오류를 반환 'InstrumentedList'개체가 어떤 속성 '그룹이 없습니다'

Traceback (most recent call last): 
    File "Mapping.py", line 119, in <module> 
    print p.group.unifiedGroup.groups 
AttributeError: 'InstrumentedList' object has no attribute 'groups' 

에 어떤 문제가 있습니까?

답변

1

통합 그룹과 그룹간에 일대 다 관계를 원할 경우 외래 키가 그룹 테이블에 있어야합니다. 다른 방법으로는 의미가 없습니다.