使用列名称执行和读取Microsoft SQL查询到pandas数据框中

时间:2018-02-05 14:48:16

标签: python pandas pyodbc

我正在尝试执行查询,然后将其放入数据框中。出于某种原因,它只加载第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)

1 个答案:

答案 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()