我正在传递emplist,它有500k条记录作为查询的输入,但是我的python cx\u oracle代码失败,出现以下错误。我需要所有500k记录的结果。如何在不创建临时表的情况下获取此信息?如果我把它作为一个列表或Dataframe传递就好了。
错误:
cx\u oracle.databaseerror:ora-01795:列表中表达式的最大数目为1000
curs.execute("select ID,NAME,SAL from EMP where ID in "+str(tuple(empList))+" ")
解决方案:我已经解决了这个问题,像下面这样每次拆分并发送1000条记录。性能方面也不错。
repeat = 1
for i in range(0, len(myList), 1000):
for j in range(i, 1000*repeat):
if j+1 <= len(myList):
tempList.append(myList[j])
//Further processing logic
tempList = []
repeat += 1
1条答案
按热度按时间cxfofazt1#
oracle允许大于1000个元组,但不允许简单值。更多关于这里和这里,
你可以利用元组
当然,如果您不能选择在中使用子查询从temp表中获取所需的值,那么就需要这样做。