Использую cx_Oracle (8.2.0/8.0.1), произвожу запрос, но часть данных теряется.
Алгоритм:
1. Из сервиса на джанге произвожу коннект к БД Oracle через менедежра:
with cx_Oracle.connect(*connection_data(kod_mo)) as connection:
cursor = connection.cursor()
...
2. Делаю запрос:
2.1 Через процедуру:
...
cursor.callproc(some_procedure, [some_args])
...
2.1 SQL самой процедуры:
...
cursor.execute(sql, {"some_args": some_args})
...
3. Извлекаю данные из запроса:
...
cursor.fetch(all/one/many)
...
Возвращает условных
250 строк (что процедура, что SQL запрос).
НО если делаю вызов из менеджера (
pl/sql developer), то запрос возвращает условных
300 строк.
Получается, что где-то потерялось условных
50 строк.
Тестировал на разных БД:
I. 300 условных строк:
Ситуация как описал выше (
теряется 50 условных строк). Причем, стабильно не приходят определенные строки, а не разные при каждом новом запросе.
II. Было 10 условных строк:
Что процедура, что сырой sql в cx_Oracle
возвращал все строки, без потерь (10 условных строк из 10).
Коннект к базам проводился через одного и того же пользователя -> данные должны приходить одинаковые
Напрашивается вывод:
1. cx_Oracle не справляется с нагрузкой (что мне кажется маловероятным);
2. Что-то не так с БД I, где 300 условных строк.
Прошу подсказать, что я делаю не так.