我在当前项目中遇到过一个地方,在那里我创建了几个类,用于在内存中存储复杂的数据结构,并创建了一个完整的SQL模式,用于在数据库中存储相同的数据。我决定使用sqlacalchemy作为ORM层,因为它似乎是我可以根据需要定制的最灵活的解决方案。
我的问题是,现在我需要将整个表映射到内存中的一个数组属性,并努力找出这是否可能,如果可能,如何使用sqlacalchemy。如果不是的话,我仍然可以更改代码中的数据结构(尽管不太理想),但我宁愿不更改。
使用以下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 ;
这只是整个数据库的一小部分,在几个地方需要同样的东西。