更新GAE数据中的条目

2024-06-16 13:07:37 发布

您现在位置:Python中文网/ 问答频道 /正文

快速提问(可能是一个基本问题!)

我正在使用谷歌应用引擎与烧瓶。我有以下数据库:

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\u id字符串来提取数据存储实体,但是我注意到我得到了存储在address\u k中的错误密钥。它与我在数据存储中看到的密钥不匹配。我不知道为什么会这样。有什么想法吗


Tags: idurldbgettimeaddressrequeststatus
2条回答

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

最后我做了以下几件事:

在add中,我将key\u 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

而且有效

相关问题 更多 >