首页 > 解决方案 > 如何在 python 中的 SQL 中使用列名编写表输出?

问题描述

我使用 pandas 库来编写从 sql 表中检索的数据。它正在工作,但我在那里看不到列名。此外,每一行都附加在 Excel 中,如

('aa','aa','01/10/2019','zzz')
('bb','cc','03/10/2019','yy')
..

我想要我的 Excel 表,其中包含列名且不带冒号。(') 一个合适的 Excel 表。

例如:

Name  Address   Date       product
 aa    aa      01/10/2019   zzz

我的代码如下;

cursor.execute(sql, values)
records = cursor.fetchall()

data = []
for row in records:
    data.append(row)

df = pd.DataFrame(data)

cursor.close()
cnxn.close()
writer = pd.ExcelWriter('output.xlsx')
df.to_excel(writer, index=False, sheet_name='Invoice') 
writer.save()

如何使用列名检索并使用 pandas 在 excel 中写入?

我使用 pyodbc 连接到 SQL Server 数据库。

标签: pythonpandas

解决方案


我建议使用 pandas 内置的read_sql函数从您的 sql 数据库中读取数据。这应该正确读取您的标题以及数据类型!

您需要定义一个 sqlAlchemy 连接以传递给 pd.read_sql 但这对于 mssql 来说很简单:

from sqlalchemy import create_engine
engine = create_engine('mssql://timmy:tiger@localhost:5432/mydatabase')
connection = engine.connect()
query = "SELECT * FROM mytable"

df = pd.read_sql(query, engine)

编辑:根据 Ratha 的评论,应该注意的是 sqlAlchemy 连接对于 read_sql 的工作并不是必不可少的,实际上,从文档中,连接被定义为:

con : SQLAlchemy 可连接(引擎/连接)或数据库字符串 URI 或 DBAPI2 连接(回退模式)

使用 SQLAlchemy 可以使用该库支持的任何数据库。如果是 DBAPI2 对象,则仅支持 sqlite3。


推荐阅读