python - 如何在 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 数据库。
解决方案
我建议使用 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。
推荐阅读
- symfony - Symfony4 如何将参数自动连接到 UserPasswordEncoderCommand 构造函数?
- javascript - 如何将 github OAuth 数据发送给客户端?
- regex - 使用 Perl 正则表达式替换引号封装字符串中的引号
- scala - 为类型类定义 Monad、Applicative 和 Functor 实例
- swift - 使用多种单元格类型重构 TableView
- java - 在 Android 上动画约束布局更改的最佳方式
- python - 如何使用多个嵌套的 for 循环加速 python 2 程序
- ms-access - 如何在不丢失setfocus的情况下将光标设置到文本框的末尾?
- c# - 在 C# 中使用接口实例化类
- python - 如何将对象实例移动到另一个类?