2012-10-03 30 views
21
from pandas import DataFrame 
import pyodbc 

cnxn = pyodbc.connect(databasez) 
cursor.execute("""SELECT ID, NAME AS Nickname, ADDRESS AS Residence FROM tablez""") 
DF = DataFrame(cursor.fetchall()) 

Esto está bien para completar mi Data Frame de pandas. Pero ¿cómo consigodevuelve los nombres de columna de la instrucción pyodbc execute()

DF.columns = ['ID', 'Nickname', 'Residence'] 

directamente desde cursor? ¿Está esa información almacenada en cursor en absoluto?

Respuesta

50

Puede obtener las columnas de la descripción del cursor:

columns = [column[0] for column in cursor.description]

+0

En caso de que alguien tenga curiosidad por saber qué significan los otros valores en '.description': https://github.com/mkleehammer/pyodbc/wiki/Cursor#attributes –

2

La mejora en la respuesta anterior, en el contexto de los pandas, he encontrado que esto hace exactamente lo que espero:

DF.columns = DataFrame(np.matrix(cursor.description))[0] 
19

pandas recientes tienen un nivel más alto read_sql funciones que pueden hacer esto para usted

import pyodbc 
import pandas as pd 

cnxn = pyodbc.connect(databasez) 
DF = pd.read_sql_query("SELECT ID, NAME AS Nickname, ADDRESS AS Residence FROM tablez", cnxn) 
+0

¡Gracias! Esta es una gran solución. –

+0

Increíble lo fácil que es – kbball

Cuestiones relacionadas