【问题标题】:Updating an entry in GAE Datastore更新 GAE 数据存储中的条目
【发布时间】:2015-09-25 07:37:07
【问题描述】:

快速问题(可能是基本问题!)。

我正在使用带有 Flask 的 Google App Engine。我有以下数据库:

class Bear(db.Model):
bear_id = db.IntegerProperty()
pair = db.IntegerProperty()
status = db.IntegerProperty()
time = db.IntegerProperty() 

我在这里通过 URL 参数添加:

@app.route('/add')
def add():
    rightNow = int(time.time())
    cur_id = int( request.args.get('id') )
    cur_status = int( request.args.get('status') )

    newEntry = Bear(
        time = rightNow,
        bear_id = cur_id,
        status = cur_status,
        # key_name = str(cur_id)
    )

    newEntry.put()  

    return 'added'

并且(尝试)在这里更新它,再次通过 URL 参数:

@app.route('/update')
def update():
    rightNow = int(time.time())
    cur_id = int( request.args.get('id') )
    cur_status = int( request.args.get('status') )

    address_k = db.Key.from_path('bear_id', cur_id)

    address = db.get(address_k)

    address.status = cur_status;
    address.put()   

    return 'cur_id'

我正在尝试使用 Bear_id 字符串提取数据存储实体,但我注意到我在 address_k 中存储了错误的密钥。它与我在数据存储中看到的密钥不匹配。我不确定为什么会这样。有什么想法吗?

【问题讨论】:

    标签: python google-app-engine flask


    【解决方案1】:

    这是因为您使用id 作为int 插入,并使用id 作为str 检索。数据存储区对它们的处理方式不同,因此您应该保持一致。

    【讨论】:

      【解决方案2】:

      我最终做了以下事情:

      在添加中,我将 key_name 添加为 ID 的字符串

      @app.route('/add')
      def add():
          rightNow = int(time.time())
          cur_id = int( request.args.get('id') )
          cur_status = int( request.args.get('status') )
      
          newEntry = Bear(
              time = rightNow,
              bear_id = cur_id,
              status = cur_status,
              key_name = str(cur_id)
          )
      
          newEntry.put()  
      
          return 'added'
      

      然后在更新时,我可以像这样拉它:

      @app.route('/update')
      def update():
          rightNow = int(time.time())
          cur_id = int( request.args.get('id') )
          cur_status = int( request.args.get('status') )
      
          address_k = db.Key.from_path('Bear', str(cur_id))    
          address = db.get(address_k)
      
          address.status = cur_status;
          address.put()   
      
          return cur_id
      

      而且它有效!

      【讨论】:

      猜你喜欢
      • 2012-06-06
      • 1970-01-01
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      相关资源
      最近更新 更多