Почему это не удается?(Google Appengine Datastore, Python) - PullRequest
2 голосов
/ 20 марта 2011
  1 from google.appengine.ext import webapp
  2 from google.appengine.ext.webapp.util import run_wsgi_app
  3 from google.appengine.ext import db
  4 
  5 a = db.GqlQuery('SELECT * FROM Store WHERE count = True').count
  6 
  7 print 'Content-Type: text/plain'
  8 print ''
  9 print str(a)+'blah blah'

Таблица 'Store' существует.

ошибка:

Traceback (most recent call last):
  File "/opt/google-appengine/google/appengine/tools/dev_appserver.py", line 3245, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "/opt/google-appengine/google/appengine/tools/dev_appserver.py", line 3186, in _Dispatch
    base_env_dict=env_dict)
  File "/opt/google-appengine/google/appengine/tools/dev_appserver.py", line 531, in Dispatch
    base_env_dict=base_env_dict)
  File "/opt/google-appengine/google/appengine/tools/dev_appserver.py", line 2410, in Dispatch
    self._module_dict)
  File "/opt/google-appengine/google/appengine/tools/dev_appserver.py", line 2320, in ExecuteCGI
    reset_modules = exec_script(handler_path, cgi_path, hook)
  File "/opt/google-appengine/google/appengine/tools/dev_appserver.py", line 2216, in ExecuteOrImportScript
    exec module_code in script_module.__dict__
  File "/home/jck/bitsconv/bitsconv.py", line 5, in <module>
    a = db.GqlQuery('SELECT * FROM Store WHERE count = True').count()
  File "/opt/google-appengine/google/appengine/ext/db/__init__.py", line 2298, in __init__
    model_class = class_for_kind(self._proto_query._entity)
  File "/opt/google-appengine/google/appengine/ext/db/__init__.py", line 266, in class_for_kind
    raise KindError('No implementation for kind \'%s\'' % kind)
KindError: No implementation for kind 'Store'

1 Ответ

6 голосов
/ 20 марта 2011

Вам необходимо определить модель для «Магазина». Даже если вам удалось получить данные в хранилище данных в виде строк хранилища, произойдет сбой, если класс модели не существует.

Я проверил это, переименовав один из моих классов моделей в рабочее приложение, в котором были сохранены данные для этого типа объекта. Он выдает то же исключение, так что я думаю, что это тоже причина вашей проблемы. Добавьте это где-нибудь в своем приложении и посмотрите, не изменит ли оно ошибку:

class Store(db.Model):
    pass

Кроме того, это не вызывает ошибку, но count на самом деле метод. Вы должны использовать это:

a = db.GqlQuery('SELECT * FROM Store WHERE count = True').count()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...