2011-03-04 24 views

Respuesta

14

pymssql afirma que es compatible con Python DB-API, por lo que debería poder obtener el atributo .description del objeto del cursor.

.description

 This read-only attribute is a sequence of 7-item 
     sequences. 

     Each of these sequences contains information describing 
     one result column: 

     (name, 
      type_code, 
      display_size, 
      internal_size, 
      precision, 
      scale, 
      null_ok) 

Por lo tanto, el primer elemento de cada una de las secuencias de "interiores" es el nombre para cada columna.

0

Es una solución básica y necesita optimización, pero el siguiente ejemplo devuelve tanto el encabezado de la columna como el valor de la columna en una lista.

import pymssql 

def return_mssql_dict(sql): 
    try: 

     con = pymssql.connect(server, user, password, database_name) 
     cur = con.cursor() 
     cur.execute(sql) 

     def return_dict_pair(row_item): 
      return_dict = {} 
      for column_name, row in zip(cur.description, row_item): 
       return_dict[column_name[0]] = row 
      return return_dict 

     return_list = [] 
     for row in cur: 
      row_item = return_dict_pair(row) 
      return_list.append(row_item) 

     con.close() 

     return return_list 

    except Exception, e: 
     print '%s' % (e) 

2

para obtener los nombres de columna en una línea separada sola coma.

colNames = "" 
for i in range(len(cursor.description)): 
    desc = cursor.description[i] 
     if i == 0: 
      colNames = str(desc[0]) 
     else: 
      colNames += ',' + str(desc[0]) 
     print colNames 

Alternativamente, pase los nombres de las columnas a una lista y use .join para obtenerlos como una cadena.

colNameList = [] 
    for i in range(len(cursor.description)): 
     desc = cursor.description[i] 
     colNameList.append(desc[0]) 

     colNames = ','.join(colNameList) 
     print colNames 
+0

realmente la forma de pitón de hacerlo es "" join (cursor.description) –

+0

.description es una lista de tuplas de 7 elementos por lo que ",". join (cursor.description) no lo hará. – Robert

1

Puede crear una lista de nombres de columnas ordenadas utilizando lista por comprensión en la descripción del cursor atributo:.

column_names = [item[0] for item in cursor.description] 
Cuestiones relacionadas