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

时间:2018-06-03 12:24:22

标签: pymysql

假设我有这段代码:

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 :(得分:1)

以下是一个示例示例:

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循环,每个结果都是我们DB中结果的元组。然后我们将它们附加到列表的末尾。当我们打印结果时,这是输出:

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

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

答案 1 :(得分:1)

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

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