我正在尝试执行查询,然后将其放入数据框架中。由于某种原因,它仅是加载列0。将整个结果集加载到该列中。
这是我在做的
conn = pyodbc.connect("connection info")
cursor = conn.cursor()
cursor.execute = "sql statement"
names = [ x[0] for x in cursor.description]
rows = cursor.fetchall()
df = pd.DataFrame(rows, columns = names)
我有这个错误。
ValueError: Shape of passed values is (1, 421), indices imply (5, 421)
假设是5列,但是当我在没有"列=名称"的情况下运行它,并且数据框架正在返回一列。在此列中,它将从SQL查询中存储5列的整个数据集。
这是我在没有"列名"的情况下运行结果集的一个示例:
(9026461, 875, 110, Decimal('1.08'), 3100)
这最终与以下内容一起使用:
engine = create_engine('mssql+pyodbc://serverName/DatabaseName? driver=SQL+Server+Native+Client+11.0')
connection = engine.connect()
resultSet = connection.execute("select column1, column2 from ....")
df = pd.DataFrame(resultSet.fetchall())
df.columns = resultSet .keys()