如何在python中用SQL编写具有列名的表输出?
我使用pandas库来编写从sql表检索的数据。它正在工作,但我在那里没有看到列名。此外,每一行都附加在Excel中,就像如何在python中用SQL编写具有列名的表输出?,python,pandas,Python,Pandas,我使用pandas库来编写从sql表检索的数据。它正在工作,但我在那里没有看到列名。此外,每一行都附加在Excel中,就像 ('aa','aa','01/10/2019','zzz') ('bb','cc','03/10/2019','yy') .. 我希望我的Excel工作表有列名,没有冒号。(')是一个合适的Excel工作表 例如: 我的代码如下 cursor.execute(sql, values) records = cursor.fetchall() data = [] for r
('aa','aa','01/10/2019','zzz')
('bb','cc','03/10/2019','yy')
..
我希望我的Excel工作表有列名,没有冒号。(')是一个合适的Excel工作表
例如:
我的代码如下
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的内置函数从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
没有必要使用sqlalchemy连接字符串。我使用了pyodbc,工作很好。谢谢你知道我如何用read_sql实现这一点吗?
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)