Pregunta

Me he encontrado con un lugar en mi proyecto actual donde he creado varias clases para almacenar una estructura de datos complicada en la memoria y un esquema SQL completo para almacenar los mismos datos en una base de datos. Decidí usar SQLAlchemy como una capa ORM, ya que parece la solución más flexible que puedo adaptar a mis necesidades.

Mi problema es que ahora necesito asignar una tabla completa a solo un atributo de matriz en la memoria y estoy luchando por descubrir si esto es posible y, si es así, cómo hacerlo con SQLAlchemy. Todavía es posible para mí cambiar las estructuras de datos en el código (aunque menos que lo ideal) si no, pero preferiría no hacerlo.

La tabla en cuestión se crea utilizando el siguiente 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 es solo una pequeña parte de la base de datos completa y se requerirá lo mismo en varios lugares.

¿Fue útil?

Solución

Parece que quieres algo como

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

Si no, por favor aclare en su pregunta.

Idealmente, debería tener 2 asignaciones a estas 2 tablas. No importa si no accederá a la segunda asignación en ningún otro lugar. El mapeo work debe tener una relación de uno a muchos con el mapeo variant . Esto le daría una lista de instancias de variante asociadas con un trabajo particular en cualquier atributo que defina su relación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top