Чтение MYSQL Db с использованием Python возвращает мне кортеж, который мне нужно преобразовать в список - PullRequest
0 голосов
/ 10 января 2019

После подключения python к MySQL Db я запустил запрос для извлечения данных из MySQL с помощью group_concat и group by, а затем я извлек.

Вывод выглядит так:

[('Fun,Wonderful,Good,Salty',)]

Но я хочу, чтобы это выглядело так:

['Fun','Wonderful','Good','Salty']

Кажется, что Fetchall возвращает какой-то кортеж, и это довольно раздражает, так как он мне нужен как список для использования в python. Я пытался использовать списочное понимание, чтобы заменить запятую (,) на кавычки и запятые и кавычки (','), но вместо этого она меняется:

["Fun','Wonderful','Good','Salty"]

Изменяет начальную и конечную кавычки, чтобы они были противоположны тому, что я хочу заменить. Как я могу получить то, что я хочу?

Почему группа concat не может сразу вывести это:

['Fun','Wonderful','Good','Salty'] 

но вместо этого выведите некоторую сортировку кортежа списка, которая требует от меня преобразования в список

1 Ответ

0 голосов
/ 10 января 2019

Вы указываете MySQL возвращать значения группы в виде строки через запятую в одном поле результата, используя group_concat. Python не может знать, что вам нужно снова разделить строку на отдельные поля.

Возвращаемое значение fetchall() определяется как последовательность последовательностей согласно спецификации DB API 2.0 в PEP 249 . Представление результата запроса в виде списка кортежей является общепринятой практикой.

Если вы просто хотите увидеть один элемент результата, вы можете использовать fetchone(), который будет возвращать одну последовательность, хотя это может быть кортеж, в зависимости от используемого вами драйвера.

Если вам нужна эта строка в виде списка в Python, вы можете получить ее, например, так:

[('Fun,Wonderful,Good,Salty',)][0][0].split(',')
# ['Fun', 'Wonderful', 'Good', 'Salty']
...