如何在Python中处理Oracle信息?

2024-05-02 04:30:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从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连接起来,所以“基本”概念对我来说可能是未知的


Tags: 函数代码import信息列表querycursorrow
1条回答
网友
1楼 · 发布于 2024-05-02 04:30:35

因为您似乎只需要第一列和第四列,所以我建议您创建一个只获取这些列的查询

然后,使用fetchall()(http://cx-oracle.readthedocs.io/en/latest/cursor.html)可能会对您有所帮助。它将为您带来一个元组列表,每个元组都是查询生成的行之一

以及从“如何”移到“为什么”:为什么在处理列表之前需要列表中的所有400k行?你就不能避免这一步吗?撇开小的优化不谈,这本身就很慢,最好避免

相关问题 更多 >