Google Appengine 数据存储 - python

2 投票
1 回答
1127 浏览
提问于 2025-04-18 18:18

我在使用谷歌的应用引擎时遇到了一个问题,我无法用Python的 put() 命令来初始化任何表格。

这是我的代码:

    import webapp2
    import datetime
    from google.appengine.ext import db
    from google.appengine.api import users

    class MainHandler(webapp2.RequestHandler):
        def get(self):
            self.response.write('Hello world!')

    app = webapp2.WSGIApplication([
        ('/', MainHandler)
    ], debug=True)




    class Employee(db.Model):
      name = db.StringProperty(required=True)
      role = db.StringProperty(required=True,
                               choices=set(["executive", "manager", "producer"]))
      hire_date = db.DateProperty()
      new_hire_training_completed = db.BooleanProperty(indexed=False)
      email = db.StringProperty()


    e = Employee(name="John",
                 role="manager",
                 email="joe@joe.com")
    e.hire_date = datetime.datetime.now().date()
    e.put()

然后出现的错误是:

    Traceback (most recent call last):
      File "C:\python27_x64\blog\blog\main.py", line 46, in <module>
        e.put()
      File "C:\python27_x64\lib\google\appengine\ext\db\__init__.py", line 1069, in put
        self._populate_internal_entity()
      File "C:\python27_x64\lib\google\appengine\ext\db\__init__.py", line 1038, in _populate_internal_entity
        self._entity = self._populate_entity(_entity_class=_entity_class)
      File "C:\python27_x64\lib\google\appengine\ext\db\__init__.py", line 1107, in _populate_entity
        entity = _entity_class(self.kind(), **kwds)
      File "C:\python27_x64\lib\google\appengine\api\datastore.py", line 759, in __init__
        _app = datastore_types.ResolveAppId(_app)
      File "C:\python27_x64\lib\google\appengine\api\datastore_types.py", line 228, in ResolveAppId
        ValidateString(app, 'app', datastore_errors.BadArgumentError)
      File "C:\python27_x64\lib\google\appengine\api\datastore_types.py", line 176, in ValidateString
        raise exception('%s must not be empty.' % name)
    BadArgumentError: app must not be empty.

谢谢你的帮助。

1 个回答

0

错误发生在main.py的第46行,所以我猜你可能只是复制了你代码的一部分。

把下面的几行代码放到MainHandler类里面,这样你就可以在数据存储中创建一个叫做Employee的实体了:

e = Employee(name="John",
             role="manager",
             email="joe@joe.com")
e.hire_date = datetime.datetime.now().date()
e.put()

撰写回答