Errores de código PYODBC para consultas más largas -- python campo con sql-server campo con pyodbc camp Relacionados El problema

pyodbc code errors for longer queries


0
vote

problema

Español

He probado un código PyODBC y funciona bien cuando restringo artificialmente la consulta para devolver conjuntos más pequeños / correr más rápido. Pero cuando intento ejecutar restricciones artificiales, empiezo a obtener errores. Aquí hay un ejemplo:

  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   

Ahora simplemente modifico el SQL inicial cambiando el rango de fecha. El cursor inicial. Exigir (SQL) toma mucho más tiempo para ejecutarse y cuando ejecuto SQL2 recibo un error:

  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)")   

parece casi como si la conexión se cerrara. Esto nunca sucede con las consultas rápidas.

Original en ingles

I have tested some pyodbc code and works just fine when I artificially constrain the query to return smaller sets/run faster. But when I try to run w/o artificial constraints, I start getting errors. Here's an example:

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 

Now I simply modify the initial sql by changing the date range. The initial cursor.execute(sql) takes much longer to run and when I execute sql2 I get an error:

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)") 

Seems almost as though the connection got closed. This never happens with quick queries.

        
     
     

Lista de respuestas


Relacionados problema

4  Python en Windows: gran cantidad de insertos usando PyODBC causa la fuga de la memoria  ( Python in windows large number of inserts using pyodbc causes memory leak ) 
Estoy tratando de rellenar una base de datos MS SQL 2005 usando Python en Windows. Estoy insertando millones de filas, y en 7 millones estoy usando casi un gi...

0  Fije el campo booleano en el acceso DB con Pyodbc  ( Set boolean field on access db with pyodbc ) 
Yo uso pyodbc con acceso DB. Puedo agregar una columna BOOL (sí / no) en el acceso con este comando: crsr.execute("alter table "+tableName+" add column {...

0  Importar Pyodbc, ningún nombre de módulo 'PYODBC'  ( Import pyodbc no module name pyodbc ) 
Soy bastante nuevo para todo esto, así que por favor soplete conmigo. Estoy tratando de implementar mi código en el tallo elástico de AWS y mi código tiene ...

0  Python MS Access Fuente de datos Nombre no encontrado y sin controlador predeterminado especificado [duplicado]  ( Python ms access data source name not found and no default driver specified ) 
Esta pregunta ya tiene una respuesta aquí : "Nombre de la fuente de datos no encontrado y no Conduct...

5  ¿Es posible especificar la DLL del controlador directamente en la cadena de conexión ODBC?  ( Is it possible to specify the driver dll directly in the odbc connection string ) 
Estoy tratando de usar PyODBC para conectarse a un servidor SQL (MS SQL Server a través de FreetDS) en una aplicación portátil; Como se supone que debe estar ...

0  ¿Cómo bucle a través de registros para enviar una solicitud de poste única al servidor?  ( How to loop through records to send single post request to server ) 
Tengo una tabla SQL en la que estoy pasando para enviar una solicitud de publicación única a un servidor para cada registro. Todos los registros deben ser Jso...

0  ¿Usar PYODBC para importar el nombre de la columna con caracteres no alfanuméricos?  ( Using pyodbc to import column name with non alphanumeric characters ) 
Actualmente estoy tratando de usar PyODBC para leer columnas de Microsoft Access a Python. Una de las columnas tiene un signo de +. ¿Cómo iría a seleccionar e...

0  PYODBC: /TMP/ODBC.LOG El archivo excede a más de 90 GB y detiene la recuperación de datos de Data Warehouse  ( Pyodbc tmp odbc log file exceeds more than 90gb and stops data fetching from d ) 
Estoy tratando de obtener 150 millones de filas con datos de mensajes del almacén de datos en mi instancia de EC2. Tengo un espacio disponible de 90 GB en mi ...

0  Formato de datos / tiempo con pyodbc y openpyxl  ( Formatting data time with pyodbc and openpyxl ) 
Tengo un script de Python que toma registros de un .mdb usando una consulta de SQL y los imprime a un documento de Excel. Dos de los campos que se imprimen so...

2  Llamada asíncrona con tornado y pyodbc  ( Asynchronous call with tornado and pyodbc ) 
Quiero implementar un servicio web basado en Tornado, que puede proporcionar el servicio de consulta de la base de datos para los usuarios. Utilicé el módulo ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos