首页 文章

如何在where子句中传递变量,当它包含python / cx_Oracle中的in_clause和单值条件时

提问于
浏览
0

我被困在涉及cx_Oracle的python代码的下面部分 . 我正在尝试在表格上进行更新,如下所示: -

update table set column3 ='x'其中column1 in(1,2,3)and column2 = 4

我只能通过一个列传递来执行此操作: -

例:-

in_clause_list = [1,2,3]

in_clause =',' . join([':i%d'%x for x in xrange(len(in_clause_list))])

statement =“update table set column3 = x其中column1 in(%s)”

cursor.execute(语句%in_clause,in_clause_list)

有了这个,我能够继续 .

我也可以在下面做: -

where_clause_tuple =(1,4)

statement =“update table set column3 = x其中column1 =:column1 and column2 =:column2”

cursor.execute(statement,where_clause_tuple)

但坚持下面几天: -

update table set column3 = x其中column1 in(1,2,3)和column2 = 4

如何在“in_clause”变量和直接单值where子句条件中传递值 . 总而言之,我无法绑定变量 .

提前致谢 :)

1 回答

  • 0

    也许尝试这样一个简单的连接方法:

    in_clause_list = [1,2,3]
    in_clause = "('{0}')".format("','".join(map(str, in_clause_list)))
    where_clause_tuple = (1,4)
    statement = "update table set column3 = x where column1 in " + in_clause 
    + " and column2 =  " + str(where_clause_tuple[1])
    cursor.execute(statement)
    

相关问题