为什么这个会失败?(谷歌App Engine数据存储,Python)
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
你需要为“商店”定义一个模型。即使你已经成功把数据存入数据库作为商店的记录,如果没有这个模型类,程序还是会出错。
我通过把一个正常工作的应用中的模型类重命名来验证这一点,那个应用里已经存有这种类型的数据。结果也抛出了同样的错误,所以我猜这也是你遇到问题的原因。把下面这段代码加到你的应用中,看看错误是否有所改变:
class Store(db.Model):
pass
另外,这个错误不是由这个引起的,但count
其实是一个方法。你应该使用下面的代码:
a = db.GqlQuery('SELECT * FROM Store WHERE count = True').count()