dmv*_*nna 35 python pyodbc pandas
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())
Run Code Online (Sandbox Code Playgroud)
这可以填充我的pandas DataFrame.但我怎么得到
DF.columns = ['ID', 'Nickname', 'Residence']
Run Code Online (Sandbox Code Playgroud)
直接从光标?该信息是否完全存储在光标中?
Mat*_*ohn 81
您可以从游标描述中获取列:
columns = [column[0] for column in cursor.description]
小智 33
最近的大熊猫有更高级别的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)
Run Code Online (Sandbox Code Playgroud)
小智 10
如果您遇到NoneType来自Matti John提供的代码的错误,请确保在从数据库中检索数据后进行cursor.description调用。一个例子:
cursor = cnxn.cursor()
cursor.execute("SELECT * FROM my_table")
columns = [column[0] for column in cursor.description]
Run Code Online (Sandbox Code Playgroud)
这为我修好了。
改进上一个答案,在熊猫的背景下,我发现这正是我所期望的:
DF.columns = DataFrame(np.matrix(cursor.description))[0]
Run Code Online (Sandbox Code Playgroud)