簡體   English   中英

使用Python從SQL數據庫到Excel

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM