我正在尝试执行查询,然后将其放入数据框中。出于某种原因,它只加载第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列,但是当我在没有'columns = names'的情况下运行它时,数据帧返回一列。在此列中,它存储了来自sql查询的5列的整个数据集。
这是我在没有'columns name'的情况下运行结果集的示例:
(9026461, 875, 110, Decimal('1.08'), 3100)
答案 0 :(得分:0)
这终于与以下内容合作:
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()