我有以下查询(注意不是普通的SELECT):
class App:
__metaclass__ = ABCMeta
class EventHandlerMethods:
@tag_method(3)
def on_event_3():
# changes something in App object
@tag_method(5)
def on_event_5():
# changes something else in app object
def __init__(self):
event_handler = get_dict(EventHandlerMethods)
def on_event(event_type, *args, **kwargs):
event_handler[event_type](*args, **kwargs)
问题这会返回许多字段,我只需要前两个字段,请参阅完整代码:
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]
变量
我该如何以更清洁的方式写这个?
我正在使用Mysql / Oracle提供的连接器
答案 0 :(得分:2)
不要将行解包为多个变量。只需将行放入一个变量中,然后从中获取所需的内容。
[(row[0], row[1]) for row in self.cursor]
或者甚至可能:
[row[:2] for row in self.cursor]
答案 1 :(得分:1)
尝试:
res = [(Db,Name) for(Db,Name,*_) in self.cursor]
元组解包中的*
格式表示“ a”catch-all“名称,该名称将被分配一个未分配给”常规“名称的所有项目的列表。”
参考文献: