繁体   English   中英

将cx_Oracle与IN语句一起使用(Python 3)

[英]Using cx_Oracle with an IN statement (Python 3)

我正在尝试使用cx_Oracle将参数传递到SQL“ IN”语句中。 这给出了正确的结果:

sql = """select * from
           (select level numb from dual connect by level <= 4)
         where numb = :var"""

print([row[0] for row in cur.execute(sql, (1,))])
Output: [1]

但是我还不能弄清楚如何使用“ IN”语句。

sql = """select * from
           (select level numb from dual connect by level <= 4)
         where numb in :var"""

print([row[0] for row in cur.execute(sql, (1, 2))])
Output: cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number

我尝试了IN语句的变体,还尝试使用字典来传递参数。

当使用单个值或文字时,SQL中的IN子句需要用括号括起来的值。 并且由于您传递了两个参数,因此在括号内要包含两个占位符。

sql = """select * from
           (select level numb from dual connect by level <= 4)
         where numb in (:1, :2)"""

print([row[0] for row in cur.execute(sql, (1, 2))])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM