2016-11-16 11 views
1

Я новичок в Python. Я успешно подключился к моей базе данных SQL через соединение odbc, и я извлекаю данные из таблицы. Как я могу получить эти данные в книгу Excel. Предпочтительно использовать модуль xlsxwriter.Из базы данных SQL в Excel с Python

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() 

ответ

2

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 являются основными, и это приводит в одном листе Excel документ с именем out.xlsx в текущей папке.

1

Поскольку у вас уже есть свои данные, кажется, что ваш вопрос - просто, как получить ваши данные в 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

Как и в стороне, вы также можете получить доступ к SQL и Excel через ADO (используя COM), однако, если вы только начинаете с Python, это может быть немного сложнее , Если вы заинтересованы в поиске на этом позже, вот праймер на ADO в питоне: http://mayukhbose.com/python/ado/index.php

1

Если 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() 
1
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() 
+0

Привет, когда я пытаюсь запустить это я получаю следующее сообщение об ошибке: TypeError: неподдерживаемый тип <тип «pyodbc.Row»> в записи() – Erinna00

+0

Используйте 'row.column' где' column' это имя столбец в вашей таблице. Поэтому, если у вас есть таблица с именами столбцов 'username',' password', вы замените это значением. Объект Row, по-видимому, не поддерживается. Поддерживаемые типы: 'string',' number', 'formula',' None'. https://xlsxwriter.readthedocs.io/worksheet.html#write – ipinak

 Смежные вопросы

  • Нет связанных вопросов^_^