سؤال

وجئت عبر مكانا في مشروعي الحالي حيث خلقت عدة فئات لتخزين بنية بيانات معقدة في الذاكرة ومخطط 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