return column names from pyodbc execute() statement
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())
This is fine to populate my pandas DataFrame. But how do I get
DF.columns = ['ID', 'Nickname', 'Residence']
straight from cursor? Is that information stored in cursor at all?
Solution 1:
You can get the columns from the cursor description:
columns = [column[0] for column in cursor.description]
Solution 2:
Recent pandas have a higher level read_sql
functions that can do this for you
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)
Solution 3:
In case you are experiencing the NoneType
error from the code provided by Matti John, make sure to make the cursor.description
call after you have retrieved data from the database. An example:
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM my_table")
columns = [column[0] for column in cursor.description]
This fixed it for me.