Подключение и запрос с SQL Server с использованием Python - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть следующий код

import pymssql
import pickle
import pandas as pd
user =
password = 
server = 
db_name = 

query_exec = "select * FROM "+db_name+".INFORMATION_SCHEMA.TABLES;"

conn = pymssql.connect(server, user, password, db_name)
cursor = conn.cursor()

## Get the list of tables
cursor.execute(query_exec)
rows = cursor.fetchall()
table_list = ['.'.join(row[0:3]) for row in rows]
table_list = [i for i in table_list if 'DATABASE' not in i]

dt_dict = {}
for tab in table_list:
    print('-'*10, tab, '-'*10)
    sql = 'select * FROM ' + tab
    try:
        dt_dict[tab] = pd.read_sql(sql,conn)
    except :
        print('The following table was not processed', tab)
with open('database_import.pkl', 'r') as file:
    pickle.dump(file, dt_dict)

Я пытаюсь подключиться к серверу SQL, получить все данные в списке и сохранить их в pkl с.Проблема в том, что есть некоторые таблицы, которые слишком велики.

Есть ли способ запросить их (или некоторые) перед их сохранением?

1 Ответ

0 голосов
/ 30 сентября 2019

Когда pickle.dump добавляет объект / данные в конец файла, вы можете просто перенести операцию открытия файла и выгрузки в цикл for, чтобы каждый дамп таблицы добавлялся последовательно

file = open('database_import.pkl', 'wb')
for tab in table_list:
    print('-'*10, tab, '-'*10)
    sql = 'select * FROM ' + tab
    try:
        dt_dict[tab] = pd.read_sql(sql,conn)
    except :
        print('The following table was not processed', tab)
        pickle.dump(dt_dict, file)
file.close()

Теперь, чтобы прочитать вышеупомянутые данные, вы можете следовать ниже процесса:

file = open('database_import.pkl', 'rb')
myData = []
while 1:
    try:
        myData.append(pickle.load(file))
    except EOFError:
        break
print(myData)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...