如何将CursorResult对象转换为Pandas Dataframe?
下面的代码生成CursorResult-Object:
from sqlalchemy.orm import Session
from sqlalchemy import create_engine
engine = create_engine(f"mssql+pyodbc://{db_server}/{db_name}?trusted_connection=yes&driver={db_driver}")
q1 = "SELECT * FROM my_schema.my_table"
with Session(engine) as session:
results = session.execute(q1)
session.commit()
type(results)
>sqlalchemy.engine.cursor.CursorResult
由于我找不到从CursorResult中提取相关信息的方法,它try 了以下操作:
# Extracting data as we go
with Session(engine) as session:
results = session.execute(q1)
description = results.cursor.description
rows = results.all()
session.commit()
# Extracting column names
colnames = [elem[0] for elem in description]
# Extracting types
types = [elem[1] for elem in description]
# Creating dataframe
import pandas as pd
pd.DataFrame(rows, columns=colnames)
但是dtype呢?如果我只是把它们放进go ,它不会起作用,尽管看起来它们都是Python 类型.对于我的用例,我必须使用Session,所以我不能使用第一个建议来做classic :
# I cannot use
pandas.read_sql(q1, engine)
这样做的原因是我必须在相同的上下文中进行多批查询,这就是我使用Session类的原因.