pymysql-如何return以元组列表的形式查询结果

pymysql-How to return the results of a query in the form of a list of tuples

假设我有这个代码:

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,)]

这是一个示例:

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() 输入 select 语句。我们获取所有结果并将它们存储在变量结果中。我们 运行 一个 for 循环,每个结果将是我们数据库中结果的元组。然后我们将它们附加到列表的末尾。当我们打印结果时,这里是输出:

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

我们最终得到一个元组列表。

这是另一个答案,它简单地获取列名并将它们存储在嵌套元组中:

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)

SQL 中的 describe 命令将通过告诉您 table 中存在哪些列来描述 table,以及 table 的各种特征,例如主键, 数据类型等。此命令将 return 描述数据的元组。在这里,我们搜索每个结果并为每个嵌套元组获取结果中的第一个索引。第一个索引对应于 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',)]