2010-03-04 2 views
1

SQLAlchemy로 매핑을 정의하고 있는데 한 가지를 제외하고는 거의 완료되었습니다. 나는 '자원'객체와 여러 속성을 가진 연관 테이블 '관계'와 2 개의 자원 사이의 관계를 가지고있다. 내가 지금까지 거의 성공적으로 해왔 던 것은 자원 객체에 2 개의 속성을 제공하는 것입니다. 부모와 자식은 연관 테이블에 저장된 트리를 탐색합니다. 두 속성 사이의 관계는 잠시 동안 만 지속되므로 시작 날짜와 종료 날짜가 있습니다. 한 번에 하나의 리소스 만 다른 리소스의 부모가 될 수 있습니다.SQLAlchemy - 연결 테이블 및 기본 조인의 날짜가

내 문제는 하나의 관계를 만료시키고 새 관계를 만들면 부모 속성이 새로 고쳐지지 않는다는 것입니다. 리소스의 부모 속성에 대한 primaryjoin에 문제가 있을지도 모릅니다.

resource_table = model.tables['resource'] 
relation_table = model.tables['resource_relation'] 

mapper(Resource, resource_table, 
    properties = { 
     'type' : relation(ResourceType,lazy = False), 
     'groups' : relation(Group, 
      secondary = model.tables['resource_group'], 
      backref = 'resources'), 
     'parent' : relation(Relation, uselist=False, 
      primaryjoin = and_(
       relation_table.c.res_id == resource_table.c.res_id, 
       relation_table.c.end_date > func.now())), 
     'children' : relation(Relation, 
      primaryjoin = and_(
       relation_table.c.parent_id == resource_table.c.res_id, 
       relation_table.c.end_date > func.now())) 
    } 
) 

mapper(Relation, relation_table, 
    properties = { 
     'resource' : relation(Resource, 
      primaryjoin = (relation_table.c.res_id == resource_table.c.res_id)), 
     'parent' : relation(Resource, 
      primaryjoin = (relation_table.c.parent_id == resource_table.c.res_id)) 
    } 
) 

oldrelation = resource.parent 
oldrelation.end_date = datetime.today() 
relation = self.createRelation(parent, resource) 
# Here the relation object has not replaced oldrelation in the resource object 

어떤 생각 : 여기

몇 가지 코드?

감사합니다,

리처드 로페스

+0

잠재적 인 도우미가 가로 스크롤 막대를 사용하지 않도록하십시오. o) –

+0

예. 이제 더 좋아 보인다. 감사 ;-). –

답변

0

나는 실제로 내 문제의 원인을 발견하고 작업을 가지고있다. See here

건배,

리처드 로페스

0

은 날짜 비교에 >= 대신 >을 사용하는 것이 좋습니다.