Python turbodbc, запрашивающий MSSQL, используя множество пакетов для панд - PullRequest
0 голосов
/ 11 июля 2019

Я хочу запросить базу данных Microsoft SQL Server с помощью пакета turbodbc. Отойдя от pyodbc по соображениям скорости ...

Документы на этот замечательный маленький пакет находятся здесь: https://turbodbc.readthedocs.io/en/latest/pages/advanced_usage.html#advanced-usage

Существует опция, позволяющая получать наборы результатов с единым целым в пакетах.

Это пример, приведенный:

cursor.execute("SELECT A, B FROM my_table")
batches = cursor.fetchnumpybatches()
for batch in batches:
    print(batch)

Вывод OrderedDcit выглядит следующим образом:

OrderedDict([('A', masked_array(data = [42 --],
                                mask = [False True],
                                fill_value = 999999)),
             ('B', masked_array(data = [3.14 2.71],
                                mask = [False False],
                                fill_value = 1e+20))])

Я бы хотел использовать этот метод для загрузки данных в панд. Имеется аргумент read_buffer_size, который делает этот метод очень удобным для меня, так как мне приходится запрашивать довольно большой объем данных.

Я уже могу перейти от numpy к пандам без итерации, используя fetchallnumpy.

Мой метод для этого:

conn = turbodbc.connect(connection_string = connstring)
cursor = conn.cursor()
cursor.execute("SELECT * from table")
table = cursor.fetchallnumpy()
df = pd.DataFrame(table,columns=table.keys())
cursor.close()
conn.close()

Но мне бы очень хотелось реализовать это для панд, используя fetchnumpybatches

...