2012-10-03 15 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()) 

Questo va bene per popolare il mio DataFrame panda. Ma come faccio anomi di colonne di ritorno da pyodbc execute() istruzione

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

retta dalla cursore? Queste informazioni sono memorizzate nel cursore ?

risposta

50

È possibile ottenere le colonne dalla descrizione del cursore:

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

+0

Nel caso qualcuno sia curioso di sapere quali altri valori in ".description" significano: https://github.com/mkleehammer/pyodbc/wiki/Cursor#attributes –

2

Migliorare sulla risposta precedente, nel contesto di panda, ho trovato questo fa esattamente quello che mi aspetto:

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

I panda recenti hanno un livello superiore read_sql funzioni che possono farlo per voi

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

Grazie! Questa è un'ottima soluzione. –

+0

Incredibile com'è facile – kbball

Problemi correlati