我试图从Oracle到Python列表中提取信息,以便将它们用作函数中的输入。我正在使用以下代码:
import cx_Oracle
dsnRiesgos = cx_Oracle.makedsn(host="MYHOST", port ="MYPORT", sid="MYSID")
conect = cx_Oracle.connect(user="USER",password="PASS",dsn=dsnRiesgos)
cursor = conect.cursor()
query = """ MY_QUERY """
Referencias = []
Referencias_Exp = []
cursor.execute(query)
#The result is a view with five columns and 400,000+ rows
for row in cursor:
Referencias.append(row[1])
Referencias_Exp.append([row[1],row[4]])
我遇到的问题是,“query”的输出是400000多行,完成列表中的插入需要花费很长时间(我在15分钟后停止了插入)。我的直觉告诉我有一个更有效的方法来做这件事,但我不知道怎么做
我使用的是windows7、python3.6.2、Oracle客户端:instantclient basic Windows.x64-11.2.0.4.0
我是Python的初学者,这是我第一次将它与Oracle连接起来,所以“基本”概念对我来说可能是未知的
因为您似乎只需要第一列和第四列,所以我建议您创建一个只获取这些列的查询
然后,使用fetchall()(http://cx-oracle.readthedocs.io/en/latest/cursor.html)可能会对您有所帮助。它将为您带来一个元组列表,每个元组都是查询生成的行之一
以及从“如何”移到“为什么”:为什么在处理列表之前需要列表中的所有400k行?你就不能避免这一步吗?撇开小的优化不谈,这本身就很慢,最好避免
相关问题 更多 >
编程相关推荐