cursor.execute("SELECT * FROM t WHERE c1=:2 AND c2=:1", (1, 2))
выполняется какPython cx_Oracle игнорирует число позиционными переменных связывания
SELECT * FROM t WHERE c1=1 AND c2=2
вместо
SELECT * FROM t WHERE c1=2 AND c2=1
, как я ожидал. Зачем?
На самом деле все: номера полностью игнорируются
sql = ":5, :0, :0, :2, :1, :3"
интерпретируется так же, как
sql = ":1, :2, :3, :4, :5, :6"
Является ли это по намерению или ошибка?
Я предполагаю, что cx_oracle считает эти привязки всегда одинаковыми, начиная с 1. Однако вы можете использовать именованные привязки. Я нахожу их намного яснее. – MKesper