문제

현재 프로젝트에서 복잡한 데이터 구조를 메모리에 저장하기위한 여러 클래스를 만들고 데이터베이스에 동일한 데이터를 저장하기위한 완성 된 SQL 스키마를 만들었습니다. 나는 sqlalchemy를 ORM 층으로 사용하기로 결정했습니다.

내 문제는 이제 전체 테이블을 메모리의 배열 속성에 매핑해야한다는 것입니다. 이것이 가능한지, 그리고 그것이 Sqlalchemy와 함께 수행하는 방법을 찾기 위해 고군분투하고 있다는 것입니다. 코드의 데이터 구조를 코드로 변경할 수는 있지만 (이상적이지는 않더라도), 그렇지 않은 것을 선호합니다.

해당 테이블은 다음 SQL을 사용하여 작성됩니다.

CREATE TABLE `works` (
 `id` BIGINT NOT NULL auto_increment,
 `uniform_title` VARCHAR(255) NOT NULL,
 `created_date` DATE NOT NULL,
 `context` TEXT,
 `distinguishing_characteristics` TEXT,
 PRIMARY KEY (`id`),
 INDEX (`uniform_title` ASC),
 INDEX (`uniform_title` DESC)
) ENGINE = InnoDB DEFAULT CHARSET = utf8 ;

CREATE TABLE `variant_work_titles` (
 `id` BIGINT NOT NULL auto_increment,
 `work_id` BIGINT NOT NULL,
 `title` VARCHAR(255) NOT NULL,
 PRIMARY KEY(`id`),
 INDEX (`work_id`),
 INDEX (`title` ASC),
 INDEX (`title` DESC),
 FOREIGN KEY (`work_id`)
  REFERENCES `works` (`id`)
  ON DELETE CASCADE
  ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

이것은 완전한 데이터베이스의 작은 부분 일 뿐이며 여러 곳에서도 같은 것이 필요합니다.

도움이 되었습니까?

해결책

당신이 같은 것을 원한 것 같습니다

work_instance.variants = [<some iterable of variants>]

그렇지 않다면 귀하의 질문을 명확히하십시오.

이상적으로는이 2 개의 테이블에 2 개의 매핑이 있어야합니다. 다른 곳에서는 두 번째 매핑에 액세스하지 않더라도 중요하지 않습니다. work 매핑은 일대일 관계가 있어야합니다 variant 매핑. 이것은 당신에게 목록을 줄 것입니다 variant 특정 인스턴스 work 어떤 속성에서 당신은 당신의 관계를 정의합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top