inc*_*ent 6 python windows db2 odbc 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()
Run Code Online (Sandbox Code Playgroud)
此代码在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数据源下找到该跟踪。)
| 归档时间: |
|
| 查看次数: |
2140 次 |
| 最近记录: |