سؤال

لدي قائمة بأسماء المفاتيح التي أريد إحضارها بالجملة (يتم تخزين أسماء المفاتيح في سلسلة stringlistproperty المرفقة بكيان).كانت خطتي العامة هي القيام بما يلي:

usernames = userrefInstance.users # A collection of strings on another 
model. 
keys = [Key.from_path('User', key_name) for username in usernames] 
users = db.get(keys)

أسئلتي هل يصل Key.from_path إلى مخزن البيانات؟أحاول أن أكون بأسرع ما يمكن ، وإذا كان key.from_path يضرب متجر البيانات ، أحتاج إلى العمل طريقة أخرى لتخزين مجموعة من المفاتيح - لا أريد بشكل خاص تخزين الكائن الرئيسي في خاصية القائمة كما أقدم أيضًا استفسارات سهلة الاستخدام عبر StringListPropererties.

هل كانت مفيدة؟

المحلول

وبعد حفر والأسئلة على مجموعة أخرى، اتضح ما يلي:

<اقتباس فقرة>   يتم تحديد

ومفاتيح بالكامل من التطبيق   ID والمسار، لذلك ليس هناك حاجة ل   الوصول إلى مخزن البيانات لهذا الغرض. - نيك جونسون

وأو يمكنك أيضا استخدام قائمة db.Key

نصائح أخرى

المعلمات التي تنتقل إليها Key.from_path() تحتوي على جميع المعلومات اللازمة لإنشاء المفتاح الفريد، لذا ليست هناك حاجة للوصول إلى مخزن البيانات.

يحتوي كل كيان في مخزن البيانات على مفتاح يحدده بشكل فريد.يتكون المفتاح من المكونات التالية:

  1. نوع الكيان الذي يتم تصنيفه لغرض استعلامات مخزن البيانات
  2. معرف للكيان الفردي، والذي يمكن أن يكون إما
    • سلسلة اسم مفتاح
    • معرف رقمي صحيح
  3. مسار أصل اختياري يحدد موقع الكيان داخل التسلسل الهرمي لمخزن البيانات

مصدر: https://developers.google.com/appengine/docs/python/datastore/entities

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top