CÓMO
Al editar una vista versionada con la función Actualizar cursor de ArcPy, se devuelve la siguiente excepción:
Error: SystemError: error return without exception set.
A continuación se muestra un ejemplo de código Python utilizado para editar una vista versionada mediante la función updateRow().
import arcpy dbConnection = r'C:\Users\name\AppData\Roaming\ESRI\Desktop10.4\ArcCatalog\sdeconnection.sde' tablePath = dbConnection + "\\testdatabase.dataowner.test_evw" with arcpy.da.UpdateCursor(tablePath, "*") as cur: for row in cur: row[1] = 3 cur.updateRow(row)
Este es el comportamiento previsto. Las vistas versionadas son para aplicaciones que no admiten el versionado de geodatabases.Las vistas versionadas no están pensadas para ser consumidas o modificadas utilizando ArcPy en ArcObjects, que no admite el versionado de geodatabases.
Modifique la clase de entidad directamente mediante ArcPy. La función de editor de Python se puede utilizar con el espacio de trabajo que apunta a una versión transaccional, como se muestra en el siguiente ejemplo:
import arcpy #Start of parameters to change path = r'C:\temp' connection = "testversion.sde" fc = "dataowner.test" instance = "machinename" username, password = "owner1", "owner1" database = "testdatabase" version = "dataowner.testversion" #End of parameters to change #There are more parameters in arcpy.CreateDatabaseConnection_management that we may wish to modify. tablePath = path + "\\" + connection + "\\" + fc arcpy.CreateDatabaseConnection_management(path, connection, "SQL_SERVER", instance, "DATABASE_AUTH", username, password, "SAVE_USERNAME", database, "", "TRANSACTIONAL", version) editor = arcpy.da.Editor(path + "\\" + connection ) editor.startEditing() editor.startOperation() with arcpy.da.UpdateCursor(tablePath, "*") as cur: for row in cur: row[1] = 3 cur.updateRow(row) editor.stopOperation() editor.stopEditing(True)
Si la vista versionada debe editarse con Python, tenga en cuenta que Python es capaz de ejecutar sentencias SQL. Por ejemplo, ArcSDESQLExecute es una alternativa a la edición de vistas versionadas. Para obtener más información sobre ArcSDESQLExecute, consulte el siguiente documento de ayuda web, ArcMap: ArcSDESQLExecute.Además, hay otros módulos que se pueden utilizar para conectar y modificar tablas en una base de datos (por ejemplo, cx_Oracle para Oracle).
Id. de artículo: 000012986
Obtener ayuda de expertos en ArcGIS
Descargar la aplicación de soporte de Esri