Python:从数据库检索的字段中删除引号

Python: remove quotes from field retrieved from DB

我在 Python,我正在查询 MySQL 数据库:

lists = db.execute("SELECT list, item, created_at FROM lists WHERE user_id = :user_id ORDER BY created_at ASC", user_id=session["user_id"])

«Item» 是一个文本字段,我在其中存储字符串数组。 这个查询的结果是:

[{'list': '1', 'item': '["a", "b"]', 'created_at': '2020-07-12 16:59:21'}]

如您所见,item 值被引用。我怎样才能取消引用它?我不能使用 JSON 字段,因为我在 MySQL 3.22.

  • 使用 ast.literal_evalstr 转换回 list
    • '["a", "b"]' 是一个 strliteral_eval 会把它转换回 list['a', 'b'].
  • 遍历列表,并更新每个字典中的 'item' 值。
    • 使用 enumerate
    • 找到正确的列表索引
from ast import literal_eval

for i, l in enumerate(lists):
    lists[i]['item'] = literal_eval(l['item'])

prints(lists)
[{'list': '1', 'item': ['a', 'b'], 'created_at': '2020-07-12 16:59:21'}]

使用 .update 代替 enumerate

for l in lists:
    l.update(item=literal_eval(l.get('item')))