pyodbc在我的机器上非常慢,但在其他机器上却没有

时间:2013-01-03 09:26:14

标签: python windows odbc db2 pyodbc

我正在使用python 2.7和pyodbc 3.0.6访问与我的计算机在同一网络上运行的db2(9.7)服务器。

以下是一个非常简单的例子,类似于我想要做的事情。

import pyodbc as db

def dbcur(connectname):
    con = db.connect(connectname)
    cur = con.cursor()
    return cur,con


def main():

    print 'a'
    cur,con = dbcur('DSN=MYODBCCON')
    print 'b'


    # X.name is a short varchar
    qry = """
        select
        X.name as N
        from schema.table as X
        """

    print 'c'

    cur.execute(qry)

    print 'd'

    c = 0
    for row in cur:
        c+=1
        if not c%100:
            print c, row

    return

if __name__ == '__main__': main()

此代码在我的Windows 8计算机上运行速度非常慢(10秒内100行)。但是,在使用Windows 7的同事计算机上,这很快。他的计算机是我的计算机,他有相同版本的pyodbc和python,所以我不相信这是一个问题。

当我同时使用IBM DB2 ODBC DRIVER和IBM DATA SERVER DRIVER FOR ODBC时,问题仍然存在。

关于为什么这么慢的任何建议?

我知道像cur.fetchmany()这样的东西,但我仍然希望这段代码在不使用它的情况下快得多。

更新

事实证明,ODBC很慢,因为已启用跟踪功能。我禁用了跟踪,性能又回到了我的预期。 (可以在Windows 7和8中的ODBC数据源下找到跟踪。)

1 个答案:

答案 0 :(得分:1)

事实证明,ODBC很慢,因为已启用跟踪功能。我禁用了跟踪,性能又回到了我的预期。 (可以在Windows 7和8中的ODBC数据源下找到跟踪。)