Estoy usando ArcGIS Server 10.0. Tengo un geoprocesamiento que usa arcpy search, actualizar e insertar cursores. Me gustaría saber más sobre la tecnología detrás de estos cursores.
¿Utiliza algún controlador o grupo para conectarse a la base de datos (estoy usando Oracle 11g)?
¿Abre una conexión a la base de datos una vez en la creación del cursor y la cierra cuando se elimina el cursor? ¿Qué pasa con las transacciones?
¿El cursor abre una nueva conexión y transacción a la base de datos cada vez que se actualiza o inserta una fila?
fuente
del myCursor
?Debe comprender el concepto de cursores de Python.
Están modelados a partir de los cursores de la base de datos SQL en PEP 249: Python Database API Specification v2.0 para procesar los resultados devueltos por las consultas de la base de datos.
La mayoría de las interfaces de bases de datos Python se adhieren a este estándar: cx_Oracle (Oracle), Psycopg2 (PostgreSQL / PostGIS), MySQLdb (MySQL), sqlite3 (SQLite), etc.
Un cursor permite recuperar una o más filas del resultado, hasta que se hayan procesado todas las filas coincidentes y obtendrá el conjunto de resultados completo a la vez, lo que puede causar problemas de velocidad de procesamiento (rendimiento) ( ¿Hay algo más rápido que un cursor? en ArcGIS para calcular registros? ).
Los cursores de las bases de datos generalmente devuelven una lista de tuplas o una lista de la lista, mientras que los métodos de cursor en ArcGIS devuelven un objeto de enumeración de Python.
Para mejorar la solución del cursor, existen varios contenedores que proporcionan interfaces simplificadas a las bases de datos SQL. Algunos de estos pueden denominarse mapeadores relacionales de objetos u ORM (creación de objetos Pythonic a partir de filas de la base de datos) y otros solo pueden ayudar a generar SQL o proporcionar un soporte de mapeo simple (ver Programación de bases de datos de nivel superior )
Para ArcPy, las soluciones son proporcionadas por, por ejemplo, Sean Gillies ( Get with it ) y otros.
Las otras soluciones geoespaciales (PyQGIS, grass, osgeo.ogr, Pyshp, Rpy, Fiona, PySAL, etc.) no usan cursores, lo que facilita las cosas ...
fuente
arcpy.*Cursor
es una asignación de Python a lasI*Cursor
interfaces de ArcObjects . La comprensión del modelo de geodatabase de ArcObjects y ArcGIS es mucho más útil que el conocimiento de la definición de la interfaz del cursor PEP 249.Como comentó @JasonScheirer:
fuente