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

これは私のpandas DataFrameに入力するのに問題ありません。しかし、どのように私はストレートカーソルからpyodbc execute()文からカラム名を返します

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

を得るのですか?その情報はのカーソルに格納されていますか?

答えて

50

あなたはカーソルの記述から列を取得することができます。前の回答に改善

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

+0

誰かが '.description 'の他の値が何を意味するのか不明な場合:https://github.com/mkleehammer/pyodbc/wiki/Cursor#attributes –

2

、パンダの文脈では、私はこれは私が期待して正確に何を見つける:

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

最近のパンダはあなたのためにこれを行うことができるより高いレベルのread_sqlを持っています

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

ありがとう!これは素晴らしい解決策です。 –

+0

信じられないほど簡単です – kbball