Python CX_Oracle : 条件包括值列表 (IN) 的 oracle 查询

Python CX_Oracle : oracle query with conditions including a list of values(IN)

我想使用 cx_oracle 从 python 中的数据库 table 获取值列表。我无法编写具有两个 where 条件的查询,一个是单个值,另一个是列表。

当我分别过滤两个字符串或只过滤一个字符串列表时,我能够实现它。但是没能一起实现!!

    output_list=[]
    catlist = ','.join(":x%d" % i for i, _ in enumerate(category_list))        
    db_cursor = connection.cursor()
    db_cursor.execute("""
    SELECT LWEX_WORD_EXCLUDE
    FROM WCG_SRC_WORD_EXCLUDE
    WHERE LWEX_CATEGORY IN (%s) and LWIN_USER_UPDATED = :did""" % catlist, category_list, did =argUser)
    for word in db_cursor :
        output_list.append(word[0])

当前代码抛出错误。但是,如果我分别满足其中任何一个条件,那么它就可以正常工作。我使用的 python 版本是 3.5

您不能混合搭配 "bind by position" 和 "bind by name",这正是您在上面的代码中所做的。我的建议是改为做这样的事情:

output_list=[]
catlist = ','.join(":x%d" % i for i, _ in enumerate(category_list))
bindvals = category_list + [arguser]       
db_cursor = connection.cursor()
db_cursor.execute("""
SELECT LWEX_WORD_EXCLUDE
FROM WCG_SRC_WORD_EXCLUDE
WHERE LWEX_CATEGORY IN (%s) and LWIN_USER_UPDATED = :did""" % catlist, bindvals)
for word in db_cursor :
    output_list.append(word[0])