سؤال

أحاول الاستعلام عن السجلات في محرك تطبيق Google حيث يكون IntegerProperty فارغا (لا شيء). هذا ما حاولت دون نجاح:

data = db.GqlQuery("SELECT * FROM MyModel WHERE intProp=:1",None)

وأيضا مع استعلام:

query = db.Query(MyModel)
query = query.filter('intProp', None) 
data = query.fetch(limit=100)

سيكون موضع تقدير أي مساعدة.

class MyModel(db.Model):
    intProp = db.IntegerProperty()
هل كانت مفيدة؟

المحلول

يبدو رمزك صحيحا. هل لديك فعلا أي حالات MyModel مع ال intProp من None...?

تعديل: لكل تعليق OP، يبدو أنه مسألة هجرة المخططات؛ وأضاف عقارا جديدا والكيانات الموجودة المتوقعة التي تظهر لها (مجموعة لا شيء). هذا ليس كيف يتغير المخطط في عمل GAE، لكل المستندات:

لا يتطلب Datastore Engine DataTore تطبيق جميع الكيانات أن يكون لها نفس مجموعة الخصائص. بعد تحديث النماذج الخاصة بك لإضافة خصائص جديدة، ستستمر الكيانات الحالية في الوجود بدون هذه الخصائص. في بعض الحالات، هذا جيد، ولا تحتاج إلى القيام بأي عمل آخر. متى تريد العودة وتحديث الكيانات الحالية حتى يكون لديهم أيضا الخصائص الجديدة؟ سيكون وضع واحد عندما تريد إجراء استعلام بناء على الخصائص الجديدة. في مثالنا مع الصور، لن تعيد الاستعلامات مثل "الأكثر شعبية" أو "الأقل شعبية" الصور الموجودة، لأنها لا تملك (حتى الآن) خصائص التصنيفات. لإصلاح هذا، سنحتاج إلى تحديث الكيانات الموجودة في DataStore.

المقال الذي أقتبسه مستمره من خلال إظهار طريقة واحدة للقيام بذلك، لكنه نهج كبير من الطراز القديم، من قبل GAE كان من المقرر أن يكون GAE مهام مجدولة، واجهات برمجة التالية عن بعد، و C. يمكننا أن نفعل ذلك أفضل الآن. مروحة محرك التطبيق لديها حديثة جدا بريد هذا يدل على النهج العام (وخطأ أخطأ خلال هجرات المخطط الخاصة به، حتى يتمكن الآخرون من تجنب ذلك!) ونقاط API عن بعد كما أداة الرئيسية؛ كما يشير إلى وحدة نمطية (من مشروع Rietveld المفتوح المصدر المصدر، الذي بدأه Guido Van Rossum، المؤلف من Python ومساهم رئيسي في تطوير محرك التطبيق) الذي يقوم به المهمة بدقة وبشكل صحيح (ستحتاج إلى قرص هذا الرمز قليلا يستخدم نماذجك و C بدلا من Rietveld، بالطبع).

نصائح أخرى

تمكنت من الاستعلام عن كيانات ذات قيمة فارغة باستخدام خدعة مثل هذا:

حدد * من MyModel حيث INTProp <0

بطبيعة الحال، لا يوجد Garantie أن هذه الطريقة غير المنوية ستكون متوافقة مع الإصدارات المستقبلية.

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