2017-06-15 21 views
0

私はこれを行う方法を知るために様々な場所でドキュメントを見てきましたが、私は成功しませんでした。私は列の名前をSQLクエリに渡したいと思います。私はpsycopg2を使用していますし、私の最新の試みはここhttp://initd.org/psycopg/docs/sql.html#module-psycopg2.sqlSqlクエリの動的変数渡し

は私の最新の試みですが、私は、私は、パラメータに渡しているformat()を指すエラーIndexError: tuple index out of rangeを取得し、このドキュメントのページのオフに基づいていました。

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])) 

答えて

0

は、それは与えられた文書によって明らかではないが、私は私が使用したい引数を指定{}の内部で値を渡す必要がありますように見えます。この場合は、{0}

0
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]))