如何解压缩查询返回的所有内容?

时间:2016-06-23 18:27:08

标签: python mysql python-3.x mysql-connector-python

我有以下查询(注意不是普通的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提供的连接器

2 个答案:

答案 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“名称,该名称将被分配一个未分配给”常规“名称的所有项目的列表。

参考文献: