Estou usando o ArcGIS Server 10.0. Eu tenho um geoprocessamento usando pesquisa arcpy, atualizar e inserir cursores. Gostaria de saber mais sobre a tecnologia por trás desses cursores.
Ele usa algum driver ou pool para se conectar ao banco de dados (estou usando o Oracle 11g)?
Ele abre uma conexão com o banco de dados uma vez na criação do cursor e fecha quando o cursor é excluído? E as transações?
O cursor abre uma nova conexão e transação para o banco de dados toda vez que uma linha é atualizada ou inserida?
fonte
del myCursor
?Você precisa entender o conceito de cursores Python.
Eles são modelados após os cursores do banco de dados SQL na PEP 249: Python Database API Specification v2.0 para processar os resultados retornados pelas consultas ao banco de dados.
A maioria das interfaces de banco de dados Python segue esse padrão: cx_Oracle (Oracle), Psycopg2 (PostgreSQL / PostGIS), MySQLdb (MySQL), sqlite3 (SQLite), etc.
Um cursor permite a recuperação de uma ou mais linhas do resultado, até que todas as linhas correspondentes tenham sido processadas e buscará todo o conjunto de resultados de uma só vez, o que pode causar problemas de velocidade de processamento (desempenho) ( existe algo mais rápido que um cursor no ArcGIS para calcular registros? ).
Os cursores dos bancos de dados geralmente retornam lista de tuplas ou lista de lista, enquanto os métodos de cursor no ArcGIS retornam um objeto de enumeração Python.
Para melhorar a solução do cursor, existem vários wrappers que fornecem interfaces simplificadas para bancos de dados SQL. Alguns deles podem ser chamados de mapeadores relacionais de objetos ou ORM (criação de objetos Pythonic a partir de linhas do banco de dados) e outros podem apenas ajudar a gerar SQL ou fornecer suporte simples ao mapeamento (consulte Programação de banco de dados de nível superior )
Para o ArcPy, as soluções são fornecidas por, por exemplo, Sean Gillies ( Get with it ) e outros.
As outras soluções geoespaciais (PyQGIS, grama, osgeo.ogr, Pyshp, Rpy, Fiona, PySAL, etc.) Não usam cursores, o que facilita as coisas ...
fonte
arcpy.*Cursor
é um mapeamento Python para asI*Cursor
interfaces do ArcObjects . Um entendimento do modelo de geodatabase do ArcObjects e do ArcGIS é muito mais útil do que o conhecimento da definição da interface do cursor PEP 249.Como comentado por @JasonScheirer:
fonte