【问题标题】:Sql query dynamic variable passingsql查询动态变量传递
【发布时间】:2017-06-15 15:26:34
【问题描述】:

我查看了各个地方的文档以了解如何执行此操作,但没有任何成功。我想将列的名称传递给 sql 查询。我正在使用 psycopg2,我最近的尝试是基于此文档页面 http://initd.org/psycopg/docs/sql.html#module-psycopg2.sql

这是我最近的尝试,但我收到了一个错误 IndexError: tuple index out of range,它指向我正在传递参数的 format()。

def parse_files(cursor):
    for name in column_names:  
        cursor.execute(
            sql.SQL(
                "select planet_osm_point.{}, count(*) from planet_osm_point group by planet_osm_point.{}"
            ).format(sql.Identifier(name)))
        for row in cursor:
            print(str(row[0]) + str(row[1])) 

【问题讨论】:

    标签: sql postgresql psycopg2


    【解决方案1】:

    给定的文档并不清楚,但看起来我需要在 {} 内传递一个值,指定我想使用的参数。在这种情况下,它是{0}

    【讨论】:

      【解决方案2】:
      column_names = ['col1', 'col2']
      for column in column_names:
      
          query = sql.SQL('''
              select {0}, count(*)
              from planet_osm_point pop
              group by {0}
          ''').format(sql.Identifier('pop.' + column))
      
          cursor.execute(query)
          for row in cursor.fetchall():
              print (str(row[0]) + str(row[1])) 
      

      【讨论】:

        猜你喜欢
        • 2018-07-15
        • 1970-01-01
        • 1970-01-01
        • 2019-02-16
        • 1970-01-01
        • 2019-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多