Правильная настройка для cx_Oracle.Cursor.bindarraysize
Я нахожу противоречивую документацию о том, какие правильные настройки для Cursor.bindarraysize
атрибут в cx_Oracle.
cx-oracle.readthedocs говорит
Этот атрибут чтения-записи указывает количество строк для привязки за раз и используется при создании переменных с помощью setinputsizes() или var(). По умолчанию 1 означает привязку одной строки за раз.
Документация для базы данных описывает Bind Array Size по-разному:
Размер массива связывания эквивалентен количеству строк, которые он содержит, умноженному на максимальную длину каждой строки. Максимальная длина строки равна сумме максимальной длины поля плюс накладные расходы следующим образом:
Я склонен верить первому, так как возможно, что Python API выполняет эти вычисления, когда вы вызываете Cursor.setinputsizes
но может ли кто-то подтвердить или опровергнуть это убеждение?
1 ответ
Документация cx_Oracle является верной относительно того, как работает cx_Oracle. Это значение указывает количество строк, которые могут быть связаны за один раз. Значение 1 подходит для всех случаев, кроме случаев, когда выполняется executemany(). Я рассмотрел вопрос об удалении этого значения, поскольку вы в любом случае можете указать размер при создании переменной (используя параметр arraysize), и если вы этого не сделаете, она автоматически изменит размер переменной, если обнаружит, что несколько строк связаны.