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])
我想使用 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])