2017-06-15 143 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]))