python - 用字典列表中找到的名称替换字典中的键 PYTHON-FLASK

标签 python mysql templates flask jinja2

我需要使用这本字典 {'1': 9, '2': 5} (或类似的字典),并将所有键替换为数据库中各自的名称。

我能够从数据库中获取适当的名称并将它们作为字典条目放入列表中。但现在我有点麻烦了 - 第一个字典需要将它们的键替换为我从数据库创建的名称列表中的键(这一直给我错误)。我个人能想到的唯一其他解决方案是找到一种方法来获取数据库名称并将它们直接放入字典中而不是空白列表中,但我不知道如何使用循环来做到这一点。 p>

empty_list = [] **# stores it as [{"name": name1}, {"name":, name2},...]**
    for x in range(0, len(dict_key_array)):
        data = {
            "itm_num": dict_key_array[x]
        }
        mysql = connectToMySQL("app_database")
        query = "SELECT name, price FROM items WHERE items.id = %(itm_num)s;"
        pre_empty_list = mysql.query_db(query, data)
        empty_list.append(pre_empty_list)
<小时/>

到目前为止,我已经尝试过此操作,以便让这些名称在原始字典中占据各自的位置:

for k in order_data.keys(): **# go through each key of dictionary**
        for x in range(0, len(order_data)): **# create a counter(? I think this would lead to duplicates, but I don't know how to avoid this)**
            neym = empty_list[x]['name'] **# template debugger says: "TypeError: list indices must be integers or slices, not str"**
            order_data[neym] = order_data[k]
            del order_data[k]

我需要获取 {'1': 9, '2': 5} 的原始字典(或类似的字典,因为这是基于订单页面,不同的订单将具有不同的键和值)才能显示例如 {'pasta': 9, 'soda': 5},其中 'pasta' 和 'soda' 是在数据库中找到的名称。

最佳答案

我不确定是否全部正确,但可能是

# --- get names ---

mysql = connectToMySQL("app_database")
query = "SELECT name, price FROM items WHERE items.id = %(itm_num)s;"

empty_list = [] # **stores it as [{"name": name1}, {"name":, name2},...]**

for item in dict_key_array:
    result = mysql.query_db(query, {"itm_num": item})
    empty_list.append(result)

# --- convert keys in order ---    

order_data = {'1': 9, '2': 5} 

for key in order_data:
    index = int(key)-1 # convert str to int # key has value 1,2,3,... but list use 0,1,2,...
    name = empty_list[index]['name']
    order_data[name] = order_data.pop(key)
    #del order_data[key] # .pop() will remove it

但也许你应该将 nameitm_num 保留为字典 {itm_num1: {'name": name1}, itm_num2: {"name": name2} } 甚至 {itm_num1: name1, itm_num2: name2}

# --- get names ---

mysql = connectToMySQL("app_database")
query = "SELECT name, price FROM items WHERE items.id = %(itm_num)s;"

empty_dict = dict() # **stores it as {itm_num1: {'name": name1}, itm_num2: {"name": name2} }**

for item_num in dict_key_array:
    empty_dict[item_num] = mysql.query_db(query, {"itm_num": item_num})

# --- convert keys in order ---    

order_data = {'1': 9, '2': 5} 

for key in order_data:
    name = empty_dict[key]['name']
    order_data[name] = order_data.pop(key)
    #del order_data[key] # .pop() will remove it

也许您甚至可以在一个查询中获取它“从商品中选择 ID、名称、价格”

result = mysql.query_db("SELECT id, name, price FROM items")
for row in result:
    empty_dict[row['id']] = row

但它将获取数据库的所有行。但是您可以从数据库中获取一次并以不同的顺序始终使用 empty_dict

关于python - 用字典列表中找到的名称替换字典中的键 PYTHON-FLASK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57262338/

相关文章:

c++ - C++11 中的 CRTP 调度

c++ - 实现模板运算符非友元

python - 使用 DirectRunner 时 Bigquery apache beam 管道 "hanging"

mysql - 我无法用 solr 索引我的数据库。我总是得到 `Indexing failed. Rolled back all changes.`

mysql - R循环查询数据库中的所有表

mysql - mysql中获取两个日期之间的数据

templates - 相当于 ASP Classic 中的母版页

python - 转发 __getitem__ 到 getattr

python - package_dir 的空字符串键在 setup.py 中有何作用?

python - 将带括号的字符串转换为嵌套列表