Я пытаюсь прочитать данные из оракула БД.Мне нужно прочитать на python результаты простого выбора, который возвращает миллион строк.
Я использую функцию fetchall()
, изменяя свойство массива курсора.
select_qry = db_functions.read_sql_file('src/data/scripts/03_perimetro_select.sql')
dsn_tns = cx_Oracle.makedsn(ip, port, sid)
con = cx_Oracle.connect(user, pwd, dsn_tns)
start = time.time()
cur = con.cursor()
cur.arraysize = 1000
cur.execute('select * from bigtable where rownum < 10000')
res = cur.fetchall()
# print res # uncomment to display the query results
elapsed = (time.time() - start)
print(elapsed, " seconds")
cur.close()
con.close()
Если я удаляю условие where where rownum < 10000
, среда python зависает и функция fetchall()
никогда не заканчивается.
После некоторых испытаний я нашел предел для этого точного выбора, он работает до 50 тыс. Строк, но не работает, еслиЯ выбираю 60 тыс. Строк.
В чем причина этой проблемы?Должен ли я найти другой способ получить этот объем данных или проблема в соединении ODBC?Как я могу проверить это?