代码之家  ›  专栏  ›  技术社区  ›  Shuvayan Das

从python为postgresql中union中的每个查询选择特定的列

  •  1
  • Shuvayan Das  · 技术社区  · 7 年前

    我有不同的表,每个月都有相同的列。我只想从每个表中提取特定的列,然后执行 如下图所示的联合体。

    col_list = ['income', 'urban2', 'marital_stat', 'ethnic_group']
    
    data_sample = str(""" SELECT {} FROM dbo.gold_nov17 
                                where drform in ('NON')
                                """.format(', '.join(col_list)))
    

    对单个表的查询工作正常。但是,当我尝试按以下方式进行联合时:

    data_sample = str(""" SELECT {} FROM dbo.gold_nov17  
                                where drform in ('NON')
    
                                -----------
                                union all
                                -----------
                              SELECT {} FROM dbo.gold_nov17  
                                where drform in ('NON')
                                """.format(', '.join(col_list)))
    

    它抛出错误:

    """.format(', '.join(col_list)))
    
    IndexError: tuple index out of range
    

    我基本上想要为每个表选择特定的列(基于col_列表)进行联合。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Mureinik    7 年前

    通过对占位符编号,您应该能够用相同的值替换多个实例:

    data_sample = str(""" SELECT {0} FROM dbo.gold_nov17  
                            where drform in ('NON')
    
                            -----------
                            union all
                            -----------
                          SELECT {0} FROM dbo.gold_nov17  
                            where drform in ('NON')
                            """.format(', '.join(col_list)))