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

To dobrze, że zapełniłem moją ramkę DataFrame pandy. Ale jak mogęzwraca nazwy kolumn z instrukcji wykonywania pyodbc()

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

prosto z kursorem? Czy ta informacja jest przechowywana w kursorem?

Odpowiedz

50

można uzyskać kolumny z opisem Kursor:

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

+0

W przypadku, gdy ktoś jest ciekawy, co inne wartości w '.description' oznacza: https://github.com/mkleehammer/pyodbc/wiki/Cursor#attributes –

2

Poprawa na poprzedniej odpowiedzi, w kontekście pand, znalazłem to robi dokładnie to, czego się spodziewać:

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

Najnowsze pandy mają wyższy poziom funkcji read_sql, które mogą to dla ciebie zrobić:

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

Dzięki! To świetne rozwiązanie. –

+0

Niewiarygodne, jakie to łatwe – kbball