Ich verwende ArcGIS Server 10.0. Ich habe eine Geoverarbeitung mit Arcpy-Suche, Aktualisierung und Einfügen von Cursorn. Ich würde gerne mehr über die Technologie hinter diesen Cursorn erfahren.
Verwendet es einen Treiber oder Pool, um eine Verbindung zur Datenbank herzustellen (ich verwende Oracle 11g)?
Öffnet es einmal beim Erstellen des Cursors eine Verbindung zur Datenbank und schließt sie, wenn der Cursor gelöscht wird? Was ist mit Transaktionen?
Öffnet der Cursor jedes Mal, wenn eine Zeile aktualisiert oder eingefügt wird, eine neue Verbindung und Transaktion zur Datenbank?
quelle
del myCursor
?Sie müssen das Konzept der Python-Cursor verstehen.
Sie sind den SQL-Datenbankcursorn in PEP 249: Python Database API Specification v2.0 nachempfunden , um die von Datenbankabfragen zurückgegebenen Ergebnisse zu verarbeiten.
Die meisten Python-Datenbankschnittstellen entsprechen diesem Standard: cx_Oracle (Oracle), Psycopg2 (PostgreSQL / PostGIS), MySQLdb (MySQL), sqlite3 (SQLite) usw.
Ein Cursor ermöglicht das Abrufen einer oder mehrerer Zeilen des Ergebnisses, bis alle übereinstimmenden Zeilen verarbeitet wurden, und ruft die gesamte Ergebnismenge auf einmal ab, was zu Problemen bei der Verarbeitungsgeschwindigkeit (Leistung) führen kann ( Gibt es etwas schnelleres als einen Cursor? in ArcGIS Datensätze berechnen? ).
Die Datenbankcursor geben im Allgemeinen eine Liste von Tupeln oder eine Liste von Listen zurück, während die Cursormethoden in ArcGIS ein Python-Aufzählungsobjekt zurückgeben.
Um die Cursorlösung zu verbessern, gibt es mehrere Wrapper, die vereinfachte Schnittstellen zu SQL-Datenbanken bieten. Einige davon werden möglicherweise als objektrelationale Mapper oder ORM (Erstellung von Pythonic-Objekten aus Datenbankzeilen) bezeichnet, andere helfen möglicherweise nur beim Generieren von SQL oder bieten einfache Unterstützung für die Zuordnung (siehe Datenbankprogrammierung auf höherer Ebene ).
Für ArcPy werden Lösungen beispielsweise von Sean Gillies ( Get with it ) und anderen bereitgestellt .
Die anderen Geodatenlösungen (PyQGIS, Gras, osgeo.ogr, Pyshp, Rpy, Fiona, PySAL usw.) Verwenden keine Cursor, was die Sache einfacher macht ...
quelle
arcpy.*Cursor
ist eine Python-Zuordnung zu denI*Cursor
Schnittstellen von ArcObjects . Ein Verständnis der ArcObjects und des Geodatabase-Modells von ArcGIS ist weitaus nützlicher als die Kenntnis der PEP 249-Cursorschnittstellendefinition.Wie von @JasonScheirer kommentiert:
quelle