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