使用瓶框架更新 Python 中的项目字典

Update a dictionary of item in Python using bottle framework

我正在使用 bottle 框架在 Python 中进行 crud rest API,但我无法通过字典中的 id 更新项目。到目前为止,我已经完成了创建、读取和删除。

这是我的词典:

items = [
    {"id": "1", "name": "a", "lastname": "a"},
    {"id": "2", "name": "b", "lastname": "b"},
    {"id": "3", "name": "c", "lastname": "c"}, 
]

这是我的路线:

from bottle import get, post, run, redirect, request, response, view, put

@put("/items/<item_id>")
def updated_item(item_id):
    for item in items:
        if item["id"] == item_id:
        new_name = request.forms.get("name")
        new_lastname = request.forms.get("lastname")
            
        #(I need some help here)
    
    return redirect("/items")

如果 items 索引不变,则无需迭代项目。这意味着 listitem["id"]:

中的索引之间存在映射
@put("/items/<item_id>")
def updated_item(item_id):
    
    new_name = request.forms.get("name")
    new_lastname = request.forms.get("lastname")
        
    items[int(item_id) - 1] = {"id": item_id, "name": new_name, "lastname": "new_lastname"}

return redirect("/items")

如果删除项目,只需保留一个空元素以保持顺序:

@delete("/items/<item_id>"):
def delete_item(item_id):
    
    items[int(item_id)] = {}

当然,如果id是任意的,这就不行了,例如:

items = [
{"id": "12", "name": "a", "lastname": "a"},
{"id": "21", "name": "b", "lastname": "b"},
{"id": "53", "name": "c", "lastname": "c"},  
]

如果是这种情况,您应该考虑使用内存数据库(例如 SQLite),它非常适合管理您刚才展示的记录。 然后数据库将替换 items(好吧,它将是 table)。