Я пытаюсь запросить представление базы данных MS-SQL и преобразовать результат в Pandas DataFrame.
Ниже приведены два различных способа, которые я пробовал, и в обоих случаях для запроса и преобразования в DataFrame, который имеет 415076 записей (это время предназначено для преобразования, требуется ~ 439,98 секунд (~ 7 минут) это в DataFrame, а не для извлечения данных). Это типичный случай в части ввода / извлечения данных бизнес-логики моего приложения для запроса пользователя.
Примечание. Для запросов с меньшим количеством записей (скажем, в x1000) результат запроса к производительности преобразования DataFrame является быстрым в обоих случаях.
query = """ SELECT *
FROM db_view_name
WHERE CONDITION_1 = %d AND
CONDITION_2 IN (%s) """ %(int(val), ','.join(map(str, my_values_list)))
con = pyodbc.connect(con_string)
Case 1:
cursor = con.cursor()
result = cursor.execute(query)
items = [dict(zip([key[0] for key in cursor.description], row)) for row in result]
df = pd.DataFrame(items)
Case 2:
df = pd.read_sql_query(query, con)
Моя среда: Я использую Python 3.6 с веб-фреймворком Pyramid и SQLAlchemy ORM.
Как я могу сократить время, необходимое для обработки этих многочисленных записей? Любая помощь по этой проблеме будет принята с благодарностью:)