我用cx_Oracle用Python查询我的数据库。我有一个查询返回多个结果。在cx Oracle中,对返回多个结果的查询使用.fetchall()命令将每一行放入一个元组中,然后生成一个元组列表(每个返回行1个)。
获取查询结果后,其格式如下:
[('R100',), ('R200',)]
现在我想在另一个查询中使用这些结果。下一个查询如下:
base_query = "select MODEL from USER.TABLE where SERIES in :series"
其中:series是一个特殊的参数标记,当您像这样执行查询时可以替换它:
cursor.execute(base_query, series=[('R100',), ('R200',)])
当我试图将series设置为元组列表时,出现以下错误:
cx_Oracle.NotSupportedError: element 0 value is unsupported
我知道这可能是一个语法问题,因为在原始SQL中,我尝试创建的查询可能如下所示:
base_query = "select MODEL from USER.TABLE where SERIES in [('R100',), ('R200',)]"
当我真正想要的是:
base_query = "select MODEL from USER.TABLE where SERIES in ('R100','R200')
我很难让解析后的原始查询看起来像第二个示例,因为我不确定python数据类型是如何解释的(我猜我的第一个示例甚至不能正确解释原始SQL的外观)
更新:
所以我认为你应该可以通过以下方式来做到:
cursor.executemany(base_query, [('R100',), ('R200',)])
但是我得到一个错误:cx_Oracle.DatabaseError: DPI-1013: not supported
我在cxu oracle 7.0.0版上,想弄清楚我的数据库现在是什么版本