开发者

Why does this fail? (google appengine datastore, python)

开发者 https://www.devze.com 2023-02-18 17:19 出处:网络
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
  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'

The table 'Store' ex开发者_开发百科ists.

the error is:

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'


You need to define a model for "Store". Even if you've managed to get data into the datastore as Store rows, this fails when the model class doesn't exist.

I verified this by renaming one of my model classes in a working application that had data stored for that type of object. It throws the same exception, so I'm guessing that's the cause of your problem too. Add this somewhere in your application, and see if it changes the error:

class Store(db.Model):
    pass

Also, this isn't causing the error, but count is actually a method. You should use this:

a = db.GqlQuery('SELECT * FROM Store WHERE count = True').count()
0

精彩评论

暂无评论...
验证码 换一张
取 消