[英]From SQL Database to Excel with Python
我是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)通過ADO訪問SQL和Excel,但是,如果您剛開始使用Python,則可能會更具挑戰性。 如果您有興趣以后再看,這里是python中的ADO入門: http : //mayukhbose.com/python/ado/index.php
如果您可以使用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()
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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.