Я столкнулся с местом в моем текущем проекте, где я создал несколько классов для хранения сложной структуры данных в памяти и завершенной схемы 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 ;
Это лишь небольшая часть всей базы данных и то же самое будет необходимо в нескольких местах.
Это похоже на то, что я хочу. Есть ли способ сделать это без необходимости иметь класс python для вариантов? Или я должен сдаваться и иметь класс для каждого из этих элементов, несмотря на их простоту? – workmad3
Вам не нужен класс для ORM SQLAlchemy. Вы можете просто запросить таблицу без сопоставления ORM. Вы можете использовать явный fetchall(), чтобы получить все строки; вы получаете список словарей. –
S.Lott прав, вам не обязательно иметь класс для каждой таблицы. Но я все равно их создавал. Где-то в вашем коде вы захотите работать с вариантами, и вам может показаться более практичным иметь сопоставление, чем прикрепить функциональность к сопоставлению работы. – muhuk