Pergunta

Eu me deparei com um lugar no meu projeto atual, onde eu criei várias classes para armazenar uma estrutura de dados complicado na memória e um esquema SQL concluído para armazenar os mesmos dados em um banco de dados. Eu decidi usar SQLAlchemy como uma camada ORM como parece a solução mais flexível que pode adaptar às minhas necessidades.

O meu problema é que eu agora precisa mapear uma tabela inteira para apenas um atributo matriz na memória e estou lutando para descobrir se isso é possível e, se for, como fazê-lo com SQLAlchemy. Ainda é possível para mim mudar as estruturas de dados em código (embora menos do que ideal) se não, mas eu preferiria não.

A tabela em questão é criado usando a seguinte 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 ;

Esta é apenas uma pequena parte da base de dados completa ea mesma coisa vai ser exigido em vários lugares.

Foi útil?

Solução

Parece que você quer algo como

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

Se não esclarecer a sua pergunta.

Idealmente, você deve ter 2 mapeamentos para estas 2 tabelas. Não importa se você não vai acessar o segundo mapeamento em qualquer outro lugar. mapeamento work deve ter um relacionamento um-para-muitos para mapeamento variant. Isto dar-lhe uma lista de instâncias variant associados a um work particular sobre qualquer atributo você define seu relacionamento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top