Python: удалить кавычки из поля, полученного из БД - PullRequest
1 голос
/ 12 июля 2020

Я использую 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"])

«Элемент» - это текстовое поле, в котором я храню массив строк. Результатом этого запроса будет:

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

Как видите, значение item указано в кавычках. Как я могу его отменить? Я не могу использовать поле JSON, так как я нахожусь в MySQL 3.22.

1 Ответ

0 голосов
/ 12 июля 2020
  • Используйте 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')))
...