pymysql-Как вернуть результаты запроса в виде списка кортежей - PullRequest
0 голосов
/ 03 июня 2018

Допустим, у меня есть этот код:

sql_query="select actor.actor_id from actor where actor='%s'"
cursor.execute=(sql_query,(actorID))
result=cursor.fetchall()
return(result)

Что мне делать с моим кодом, чтобы результаты были в форме списка кортежей? Также я хочу, чтобы первый кортеж был именемстолбцы моего запроса.

For example: [(“Name”, “Id”,),(“Jim”,7,),(“Tom”,13,)]

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Вот еще один ответ, который просто захватывает имена столбцов и сохраняет их во вложенном кортеже:

cur.execute('''DESCRIBE patient_login''')
results = cur.fetchall()
nested_tuple_list = []
nested_tuple_list_2 = []

for result in results:
   result = ((result[0]))
   nested_tuple_list.append(result)

nested_tuple_list = tuple(nested_tuple_list)
nested_tuple_list_2.append(nested_tuple_list)
print(nested_tuple_list_2)

Команда description в SQL будет описывать таблицу, сообщая вам, какие столбцы существуют в таблице, иразличные характеристики таблицы, такие как первичный ключ, тип данных и т. д.Эта команда вернет кортеж описанных данных.Здесь мы ищем каждый результат и получаем первый индекс в результатах для каждого из вложенных кортежей.Первый индекс соответствует имени столбца в цикле for.Мы можем добавить это в первый пустой список.После добавления всех имен столбцов мы меняем список на кортеж.Затем мы добавляем этот кортеж к списку и получаем все имена столбцов в списке внутри кортежа.Вот вывод:

[('ID', 'username', 'password')]

Если вы хотите, чтобы каждый элемент в списке был кортежем сам по себе, вот код:

nested_tuple_list = tuple(nested_tuple_list)
nested_tuple_list_2 = [(x,) for x in nested_tuple_list]
print(nested_tuple_list_2)

Мы можем сделать списокпонимание с x, представляющим каждый столбец, и вот наш вывод для каждого из моих столбцов в DataFrame:

[('ID',), ('username',), ('password',)]
0 голосов
/ 03 июня 2018

Вот пример примера:

cur.execute('''SELECT * FROM patient_login''')
results = cur.fetchall()
nested_tuple_list = []

for result in results:
   nested_tuple_list.append(result)

print(nested_tuple_list)

Как видите, мы вводим наш оператор выбора с помощью cur.execute ().Мы извлекаем все результаты и сохраняем их в переменных результатов.Мы запускаем цикл for, и каждый результат будет кортежем результата в нашей БД.Затем мы добавляем их в конец списка.Когда мы печатаем результаты, вот вывод:

[(4, 'sikudabo', 'monkey1'), (83, 'sikudabo2', 'monkey2')]

В итоге мы получаем список кортежей.

...