Python:ORA-02399:超出了最大连接时间,您已注销

时间:2019-05-14 09:41:01

标签: python

我的python代码正在尝试执行几个查询,这些查询将提取120万行,然后将该数据写入文件,但是当查询运行时,将花费近50分钟来完成任务。
40分钟后,它将引发异常:

  

ORA-02399:超出了最大连接时间,您已注销

我尝试关闭连接,但是没有用。

import cx_Oracle

query1 = "SELECT col1, col2 from Table"
query2 = "SELECT col1, col2, col3 from Table"
outputFile = "file1.txt"
outputFile = "file2.txt"

def run_query(query):
    myfile = open(outputFile, 'w')
    con = cx_Oracle.connect('username/password@db-string')
    print "connected"

    cur = con.cursor()
    cur.execute(query)
    for result in cur:
        myfile.write(str(result) + "\n")
    print "Writing done"
    con.close()

run_query(query1, file1)
run_query(query2, file2)

1 个答案:

答案 0 :(得分:0)

我认为最好将所有结果都复制到csv文件中。

rows = cur.fetchall()
fp = open('/tmp/file1.csv', 'w')
myFile = csv.writer(fp)
myFile.writerows(rows)
fp.close()

for循环的时间复杂度为O(log^2(n))。因此,只需考虑需要花费120万个数据。在处理大量数据时,尽量避免for循环。这是一个例子。