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())
C'est bien de remplir mon pandas DataFrame. Mais comment puis-je obtenir
DF.columns = ['ID', 'Nickname', 'Residence']
directement de curseur? Ces informations sont-elles stockées dans curseur?
Vous pouvez obtenir les colonnes de la description du curseur:
columns = [column[0] for column in cursor.description]
Les récents pandas ont un niveau supérieur read_sql
fonctions qui peuvent le faire pour vous
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)
En améliorant la réponse précédente, dans le contexte des pandas, j'ai trouvé que cela fait exactement ce que j'attends:
DF.columns = DataFrame(np.matrix(cursor.description))[0]
Dans le cas où vous rencontrez l'erreur NoneType
du code fourni par Matti John , assurez-vous de faire le cursor.description
appeler après que vous ayez récupéré les données de la base de données. Un exemple:
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM my_table")
columns = [column[0] for column in cursor.description]
Cela m'a arrangé.