Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Выгрузка данных из MS SQL через Python используя разные библиотеки и модули. / 1 сообщений из 1, страница 1 из 1
01.04.2020, 16:14
    #39942900
Caxa_ASS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выгрузка данных из MS SQL через Python используя разные библиотеки и модули.
Добрый день.

Столкнулся со следующей задачей как выгрузка данных с MS SQL используя Python, которую удалось решить двумя разными способами, но во втором случае (описание ниже), удалось, но не до конца, где и прошу помощи в до-реализации.

Способ_1.

Используя следующие библиотеки: pyodbc, xlsxwriter, openpyxl, sqlalchemy, pandas реализовал подключение к MS SQL, передачу в нее запроса и экспорт данных в MS Excel.

Все работает хорошо, но есть два минуса:

a) при экспорте в MS Excel искажаются ID, т.к. MS Excel на статике имеет тип данных ячеек "Общий" - решение https://www.sql.ru/forum/1323739/ms-sql-python-ms-excel

b) если не использовать экспорт в MS Excel, то через функцию print(), данные в Shell отображаются очень сжато (см. скрин - Shell).

Вопрос, существует ли возможность отображать получаемые данные с запроса 1 ко 1 в Shell???

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
import pyodbc
import xlsxwriter
from openpyxl import Workbook
from sqlalchemy import create_engine
import pandas as pd

cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                        "Server=s;"
                        "Database=D;"
                        "uid=w; pwd=4")
df = pd.read_sql_query('select  * from Customer', cnxn)
#print(df)
df.to_excel(r'C:\Users\Admin\Desktop\Test.xlsx', index=False)





Способ_2.

Используя библиотеку PyQt5(QtSql), код реализации ниже, также информация об этом есть по ссылке: https://www.sql.ru/forum/1323914/podkluchenie-python-pyqt5-qtsql-k-baze-dannyh-ms-sql-dlya-zapisi-dannyh

Данным способом, мне удалось подключиться к MS SQL, сделать запрос в MS SQL и получить данные, но не совсем как бы того хотелось. Используя метод .value() из класса QSqlQuery, из БД я могу получить только данные по одному индексу или имени который внесу в value. т.е. вернуться данные только по указанному столбцу.

Вопрос, как получить данные 1 к 1 с названиями столбцов, и их отображение в Shell или импорт в MS Excel, если последний есть!?

Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
from PyQt5 import QtSql
from PyQt5.QtSql import *
from PyQt5 import QtCore, QtGui, QtWidgets
import sys

db = QtSql.QSqlDatabase.addDatabase('QODBC')
db.setDatabaseName('DRIVER={SQL Server Native Client 11.0};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s;'
                    % ('P',
                       'P',
                       's',
                       'P'))
db.open()
if db.open():
    print("open DB success.")
else:
    print("Error")
    
query = QtSql.QSqlQuery()
query.exec("select * from Employee")
while query.next():
    print(query.value(0))
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Выгрузка данных из MS SQL через Python используя разные библиотеки и модули. / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]