【问题标题】:How to not unpack all returned from a query?如何不解压缩从查询返回的所有内容?
【发布时间】:2016-10-26 05:35:19
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    甚至可能:

    [row[:2] for row in self.cursor]
    

    【讨论】:

      【解决方案2】:

      试试:

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

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

      参考资料:

      【讨论】:

      • 由于某种原因,它只适用于他的下划线,* 导致语法错误(我在 py3.4 上)
      • 我的错误,似乎问题出在 Eclipse 解释器中。从命令行运行时一切正常。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多