¿Existe una manera de ejecutar un procedimiento almacenado de SQL Server con arcpy o Python y recuperar los resultados devueltos por el procedimiento almacenado?
Hay una pregunta muy similar publicada en el foro de ArcGIS sin respuesta hasta ahora.
¿Existe una manera de ejecutar un procedimiento almacenado de SQL Server con arcpy o Python y recuperar los resultados devueltos por el procedimiento almacenado?
Hay una pregunta muy similar publicada en el foro de ArcGIS sin respuesta hasta ahora.
Para trabajar específicamente con SQL Server, podría decirse que el mejor paquete de Python es pymssql
que es:
Una sencilla interfaz de base de datos para Python que se basa en FreeTDS para proporcionar una interfaz DB-API de Python (PEP-249) a Microsoft SQL Server.
Lo he utilizado en producción durante muchos años haciendo una tonelada de llamadas a SQL SP y ha funcionado muy, muy bien.
Otro paquete, pyodbc también es capaz de ejecutar procedimientos almacenados. Consulte la guía de iniciación aquí .
Es un módulo de Python 2.x y 3.x que permite utilizar ODBC para conectarse a casi cualquier base de datos desde Windows, Linux, OS/X, y más. Implementa la especificación de la API de bases de datos de Python v2.0, pero pero se han añadido características adicionales para simplificar la programación de bases de datos aún más.
Pyodbc tiene una licencia MIT, por lo que es libre para uso comercial y personal. Incluso puedes utilizar el código fuente en tus propios proyectos. Los instaladores para Windows están disponibles aquí y la mayoría de las distribuciones de Linux están empezando a proporcionar paquetes precompilados. El código fuente completo está también está disponible.
Si alguna vez necesita ejecutar comandos SQL para una geodatabase de ArcSDE, considere la posibilidad de utilizar la función ArcSDESQLExecute que proporciona un medio para ejecutar sentencias SQL a través de una conexión ArcSDE. Sin embargo, no estoy seguro de si se pueden disparar comandos SQL para procedimientos almacenados, pero podría valer la pena intentarlo.
Gracias, acabo de probar la librería pymssql que funciona bien con procedimientos almacenados. ¿Qué pasa con arcpy? No he encontrado en ninguna parte de la documentación que no soporte procedimientos almacenados.
Puedes mezclar python normal con cosas de arcpy. Arcpy es sólo una biblioteca para python regular. Así que haz tus cosas normales de Arcpy, y luego sigue la documentación de pyodbc para ejecutar esas funciones.
Eso es correcto, usted puede utilizar tanto ArcPy y código de Python en el mismo archivo / módulo. Si alguna vez necesitas ejecutar código SQL con ArcPy y no tienes acceso a la librería pyodbc, suelo utilizar la clase ArcSDESQLExecute, que sin embargo sólo funciona con bases de datos geográficas (por lo que he probado). He actualizado mi respuesta también.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.
0 votos
La ejecución de procedimientos almacenados a través de ArcSDESQLExecute no está soportada: import arcpy sde_conn = arcpy.ArcSDESQLExecute(r" D:\ConnFiles\RDSQLDEV @KnownPoint@osa.sde") sde_return = sde_conn.execute('EXEC usp_GIS_NewlyReleasedWellData') produce: return convertArcObjectToPythonObject(self._arc_object.Execute(*gp_fixargs(args)) AttributeError