72
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())

这很好填充我的熊猫数据框。但是我怎么得到

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

直接从光标?该信息是否存储在游标中?

4

4 回答 4

133

您可以从光标描述中获取列:

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

于 2012-10-03T11:23:18.300 回答
45

最近的 pandas 具有更高级别的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)
于 2013-07-05T14:52:48.283 回答
12

如果您遇到Matti JohnNoneType提供的代码的错误,请确保在从数据库中检索数据进行调用。一个例子:cursor.description

cursor = cnxn.cursor()
cursor.execute("SELECT * FROM my_table")
columns = [column[0] for column in cursor.description]

这为我修好了。

于 2019-07-30T16:14:31.853 回答
6

在 pandas 的上下文中改进了先前的答案,我发现这完全符合我的预期:

DF.columns = DataFrame(np.matrix(cursor.description))[0]
于 2012-10-03T23:38:18.220 回答