J'utilise ArcGIS Server 10.0. J'ai un géotraitement utilisant la recherche arcpy, la mise à jour et l'insertion de curseurs. J'aimerais en savoir plus sur la technologie derrière ces curseurs.
Utilise-t-il un pilote ou un pool pour se connecter à la base de données (j'utilise Oracle 11g)?
Ouvre-t-il une connexion à la base de données une fois lors de la création du curseur et la ferme-t-il lorsque le curseur est supprimé? Et les transactions?
Le curseur ouvre-t-il une nouvelle connexion et transaction à la base de données chaque fois qu'une ligne est mise à jour ou insérée?
la source
del myCursor
?Vous devez comprendre le concept des curseurs Python.
Ils sont modélisés d'après les curseurs de base de données SQL dans PEP 249: Spécification de l'API de base de données Python v2.0 pour traiter les résultats renvoyés par les requêtes de base de données.
La majorité des interfaces de base de données Python adhèrent à cette norme: cx_Oracle (Oracle), Psycopg2 (PostgreSQL / PostGIS), MySQLdb (MySQL), sqlite3 (SQLite), etc.
Un curseur permet de récupérer une ou plusieurs lignes du résultat, jusqu'à ce que toutes les lignes correspondantes aient été traitées et qu'il récupère l'ensemble des résultats en même temps, ce qui peut entraîner des problèmes de vitesse de traitement (performances) ( Y a-t-il quelque chose de plus rapide qu'un curseur dans ArcGIS pour calculer les enregistrements? ).
Les curseurs de bases de données renvoient généralement une liste de tuples ou une liste de listes tandis que les méthodes de curseur dans ArcGIS renvoient un objet d'énumération Python.
Pour améliorer la solution du curseur, plusieurs wrappers qui fournissent des interfaces simplifiées aux bases de données SQL existent. Certains d'entre eux peuvent être appelés mappeurs relationnels d'objets ou ORM (création d'objets Pythonic à partir de lignes de base de données) et d'autres peuvent uniquement aider à générer du SQL ou fournir un support de mappage simple (voir Programmation de base de données de niveau supérieur )
Pour ArcPy, les solutions sont fournies, par exemple, par Sean Gillies ( Get with it ) et d'autres.
Les autres solutions géospatiales (PyQGIS, grass, osgeo.ogr, Pyshp, Rpy, Fiona, PySAL, etc.) n'utilisent pas de curseurs, ce qui facilite les choses ...
la source
arcpy.*Cursor
est un mappage Python auxI*Cursor
interfaces d'ArcObjects . Une compréhension d'ArcObjects et du modèle de géodatabase d'ArcGIS est beaucoup plus utile qu'une connaissance de la définition de l'interface du curseur PEP 249.Comme l'a commenté @JasonScheirer:
la source