Python 较长查询的pyodbc代码错误

Python 较长查询的pyodbc代码错误,python,sql-server,pyodbc,Python,Sql Server,Pyodbc,我已经测试了一些pyodbc代码,当我人为地约束查询以返回较小的集合/运行更快时,它工作得很好。但当我尝试运行w/o人工约束时,我开始出错。 下面是一个例子: import pyodbc #use only two days worth of data to artificially return a small sample sql = """ select * into #T1 from MYTABLE where date between '11/1/2015' and '11/2/210

我已经测试了一些pyodbc代码,当我人为地约束查询以返回较小的集合/运行更快时,它工作得很好。但当我尝试运行w/o人工约束时,我开始出错。 下面是一个例子:

import pyodbc
#use only two days worth of data to artificially return a small sample
sql = """
select * into #T1 from MYTABLE where date between '11/1/2015' and '11/2/2105'
"""

#create a connection
cnxn = pyodbc.connect('DSN=MyDatabase')  
#create a cursor
cursor = cnxn.cursor()
#execute SQL  
cursor.execute(sql)
#close the cursor
cursor.close()
#commit changes
cnxn.commit()

#now prepare to read T1
sql2 = ("""SELECT * FROM #T1""")

#create a cursor
cursor = cnxn.cursor()
#execute SQL to extract data
cursor.execute(sql2)

cursor.fetchone() #returns data as expected
现在,我只需通过更改日期范围来修改初始sql。初始cursor.executesql的运行时间要长得多,执行sql2时会出现错误:

sql = """
    select * into #T1 from MYTABLE where date between '1/1/2014' and '11/2/2105'
    """

#same code as in previous example
...

sql2 = ("""SELECT * FROM #T1""")

#create a cursor
cursor = cnxn.cursor()
#execute SQL to extract data
cursor.execute(sql2)

Traceback (most recent call last):

  File "<ipython-input-85-939a3a2fefc6>", line 6, in <module>
    cursor.execute(sql2)

ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name '#T1'. (208) (SQLExecDirectW)")

似乎连接已经关闭了。快速查询永远不会出现这种情况。

如果导入sys,然后打印sys.version,它会说什么?2.7.7 | Anaconda 2.0.1 32位|默认值,2014年6月11日,10:41:43[MSC v.1500 32位英特尔],您可以尝试cnxn.timeout=86400或其他大值。默认值应该是0无超时,永远等待,但可能有特定于SQL Server的实现正在超时选择。。。并导致该临时表不存在。