使用python-oracledb时,Oracle SQL能否同时按名和按位绑定变量?
在python-oracledb中能否混合使用名称与位置绑定变量?
两种变量绑定方式回顾
python-oracledb支持两种变量绑定方式:
按名称绑定:通过命名关键字参数传递,SQL中用
:变量名指代,同一个名称的变量会被统一替换。
示例代码:cursor.execute(''' SELECT 'Var values are ' || :var || ' and ' || :var AS var_value FROM dual ''', var="something")执行后
var_value的结果为:'Var values are something and something'按位置绑定:通过列表或元组传递参数,SQL中的
:变量名会按顺序对应列表中的元素(即使变量名重复,也会依次取列表里的不同值)。
示例代码:cursor.execute(''' SELECT 'Var values are ' || :var || ' and ' || :var AS var_value FROM dual ''', ["one thing", "another thing"])执行后
var_value的结果为:'Var values are one thing and another thing'
能否混合两种绑定方式?
不行。python-oracledb的cursor.execute()方法不支持同时传递位置参数列表(比如["another thing", "something else"])和命名关键字参数(比如name_var="one thing")。你提供的混合写法会直接触发参数错误,而且官方文档中也没有任何混合两种绑定方式的示例。
如果需要同时使用多个不同变量,要么统一用名称绑定,要么统一用位置绑定:
- 统一名称绑定示例:
cursor.execute(''' SELECT 'Var values are ' || :name_var || ', ' || :pos_var || ', and ' || :pos_var AS var_value FROM dual ''', name_var="one thing", pos_var="another thing") - 统一位置绑定示例:
cursor.execute(''' SELECT 'Var values are ' || :var1 || ', ' || :var2 || ', and ' || :var2 AS var_value FROM dual ''', ["one thing", "another thing"])
内容的提问来源于stack exchange,提问作者DSL
相关产品推荐
相关产品推荐

