从SQL数据库到使用Python的Excel

我是Python的新手。 我已经通过odbc连接成功地连接到我的SQL数据库,并从表中提取数据。 然后,我如何将这些数据导入到Excel工作簿中。 最好使用xlsxwriter模块。

import pyodbc cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=SQLSERVER;PORT=XX;DATABASE=dbname;UID=sa;PWD=##') cursor = cnxn.cursor() cursor.execute("select * from T1 where C2 not like '%text%'") for row in cursor: print row.1, row.2, row3 cursor.close() cnxn.close() 

pandas是这个最简单的赌注。 这是一个使用sqlite作为数据库后端的例子:

 In [38]: import pandas as pd In [39]: df Out[39]: 0 1 2 3 4 0 0.092719 0.664147 0.677834 0.605845 0.569223 1 0.656272 0.321661 0.294219 0.818676 0.010610 2 0.041692 0.721683 0.163525 0.175113 0.580234 3 0.852775 0.106076 0.049080 0.649362 0.265763 4 0.481842 0.942276 0.462951 0.386705 0.205302 In [40]: df.to_sql("tbl", sqlite3.connect("test.sqlite"), index=False) In [41]: new_df = pd.read_sql("select * from tbl", sqlite3.connect("test.sqlite")) In [42]: new_df Out[42]: 0 1 2 3 4 0 0.092719 0.664147 0.677834 0.605845 0.569223 1 0.656272 0.321661 0.294219 0.818676 0.010610 2 0.041692 0.721683 0.163525 0.175113 0.580234 3 0.852775 0.106076 0.049080 0.649362 0.265763 4 0.481842 0.942276 0.462951 0.386705 0.205302 In [43]: new_df.to_excel("out.xlsx") 

第41行和第43行是主要的,这导致了当前文件夹中名为out.xlsx单张Excel文档。

由于您已经拥有了您的数据,因此您的问题似乎只是如何将数据导入到Excel中。 假设您有一个名为rows的对象中的数据,这是一个结果行列表。

 import xlsxwriter workbook = xlsxwriter.Workbook('YourResults.xlsx') worksheet = workbook.add_worksheet() row = 0 col = 0 for row_data in rows: worksheet.write(row, col, row_data.1) worksheet.write(row, col+1, row_data.2) worksheet.write(row, col+2, row_data.3) row += 1 workbook.close() 

这应该将数据行写入电子表格。 您可以在这里查看xlsxwriter教程: https ://xlsxwriter.readthedocs.io/tutorial01.html

除此之外,您还可以通过ADO(使用COM)访问SQL和Excel,但是,如果您刚开始使用Python,则可能会更具挑战性。 如果你有兴趣在后面看,这是一个在Python中的ADO入门: http : //mayukhbose.com/python/ado/index.php

 import xlsxwriter workbook = xlsxwriter.Workbook('your_excel.xlsx') worksheet = workbook.add_worksheet() 

第一个版本按顺序在每一列中写入一个值(即row )。

 for index, row in enumerate(cursor): worksheet.write(0, index, row) workbook.close() 

第二个版本按顺序在每一行中写入一个值(即row )。

 for index, row in enumerate(cursor): worksheet.write(index, 0, row) workbook.close() 

如果Pandas包可用,则可以轻松地将DataFrame转储到Excel电子表格中。 格式也可以访问。 您需要通过将行附加到列表中来获取数据到DataFrame(不知道pyodbc是如何工作的)。 就像是:

 import pandas as pd data = [] ... for rows in cursor: for row in rows: data.append(row) df = pd.DataFrame(data) 

然后转储到Excel。

 def df_to_excel(path,data_frame): writer = pd.ExcelWriter(path, engine='xlsxwriter') data_frame.to_excel(writer, index=False, sheet_name='SHEET0') # sheet 0 writer.save()