从pyodbc execute()语句返回列名

daupos2t  于 2021-07-13  发布在  Java
关注(0)|答案(4)|浏览(496)
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())

这是很好的填充我的PandasDataframe。但我该怎么做呢

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

直接从游标开始?这些信息存储在游标中了吗?

e1xvtsh3

e1xvtsh31#

可以从光标描述中获取列: columns = [column[0] for column in cursor.description]

wd2eg0qa

wd2eg0qa2#

最近的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)
x7yiwoj4

x7yiwoj43#

以防您遇到 NoneType matti john提供的代码有错误,请确保 cursor.description 从数据库检索数据后调用。举个例子:

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

这帮我修好了。

3okqufwl

3okqufwl4#

在前面的答案的基础上,以Pandas为例,我发现这正是我所期望的:

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

相关问题