Преобразование результата SQL в строковый формат в Python

#python #mysql

Вопрос:

Я пытаюсь преобразовать результат, полученный при выполнении инструкции SQL, в строку, так как выходные данные находятся в формате кортежа. Я новичок в программировании на Python, поэтому я нашел в Интернете код, который может преобразовать кортеж в строку, но когда я попробовал его, используя кортеж, полученный в результате выполнения инструкции SQL, результат остался неизменным. Не могли бы вы, пожалуйста, показать мне, как это сделать по назначению ? Ниже приведен код, который был использован:

 import functools
import operator
import mysql.connector

mydb = mysql.connector.connect(
      host='localhost',
      user='root',
      password='123456789',
      port='3307',
      database='magna'
)



def convertTuple(tup):
     str1 = functools.reduce(operator.add, (tup))
     return str1


#The converting function

mycusor = mydb.cursor()
mycusor.execute("SELECT Name FROM people WHERE ID =1")
para1 = mycusor.fetchall()


targ = para1
str2 = convertTuple(targ)
print(str2)
 

Результат, полученный из приведенного выше кода :

 ('Mike',)
 

Комментарии:

1. Можете ли вы поделиться примерами данных? Также вы переписываете встроенные типы ( tuple и str ). Используйте разные имена для этих переменных.

2. Спасибо за совет @nocibambi , я включил их в редактирование.

Ответ №1:

para1 представляет собой список кортежей. Чтобы преобразовать каждый кортеж в строку, нам нужно преобразовать каждый элемент в кортеже в строку, а затем использовать str.join, чтобы объединить их в строку.

Использование карты

 joined_str = ', '.join(map(str, tup))
 

или понимание списка

 joined_str = ', '.join([str(elem) for elem in tup])
 

Если вы хотите превратить весь список в строку, вам нужно применить еще один слой соединения

 joined_str = 'n'.join([', '.join(map(str, tup)) for tup in para1])
 

или

 joined_str = 'n'.join([', '.join(str(elem) for elem in tup) for tup in para1])