1

我有以下查询(注意不是正常的 SELECT):

sql = "SHOW PROCEDURE STATUS WHERE Db <> 'sys' "

问题这会返回许多字段,我只需要前两个字段,请参阅完整代码:

sql = "SHOW PROCEDURE STATUS WHERE Db <> 'sys' "
self.cursor.execute(sql)
res = [(Db,Name) for(Db,Name,a,b,c,d,e,f,g,h,j) in self.cursor]

为了不出错,我需要添加所有a...j我什么都不做的变量。
我如何以更干净的方式写这个?

我正在使用 Mysql/Oracle 提供的连接器

4

2 回答 2

2

不要一开始就将该行解压缩为多个变量。只需将行放入一个变量中,然后从中获取您想要的内容。

[(row[0], row[1]) for row in self.cursor]

甚至可能:

[row[:2] for row in self.cursor]
于 2016-06-23T18:34:30.413 回答
1

尝试:

res = [(Db,Name) for(Db,Name,*_) in self.cursor]

元组解包中的*格式表示“一个“包罗万象”的名称,它将被分配一个未分配给“常规”名称的所有项目的列表。

参考:

于 2016-06-23T18:31:33.697 回答