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_eval
将 str
转换回 list
'["a", "b"]'
是一个 str
,literal_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')))
我在 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_eval
将str
转换回list
'["a", "b"]'
是一个str
,literal_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')))