Veel

Tööruum on juba tehingurežiimis

Tööruum on juba tehingurežiimis


Kirjutan värskenduskursori kasutamiseks skripti. Funktsioonide klass on lukustatud, nii et ma versioonin andmebaasi, loon funktsioonikihi ja sobitan versioonid. Ma võtsin oma skeemi skeleti sellest lõimest. Silumine RuntimeError: tööruum on juba tehingurežiimis saidilt arcpy.da.UpdateCursor ja ArcSDE funktsiooniklassid?

Peamine erinevus seisneb selles, et mul oli juba kataloogis SDE ühenduse fail. Kas selle vea vältimiseks tuleks see iga kord skripti käivitamisel uuesti luua?

__author__ = 'Administrator' from arcpy import * import GetSRConfig import os import time def GetDateTimeString (n = None): "" "format a datetime to string" "" if (n == None): s = time.strftime ("% Y%m%d%H%M%S ", time.localtime ()) else: s = time.strftime ("%Y%m%d%H%M%S ", time.localtime ()) if ( (isNumeric (n) == True) ja ((n> 4) ja (n <14))): s = s [0: n] else: s = s [0:14] return s def isNumeric (s) : b = Tõeline katse: i = ujuk (id), välja arvatud: # mitte numbriline: # numbriline b = vale tagastamine b #Locals P6featureName = GetSRConfig.SDELayer Parent = "dbo.DEFAULT" version = "myVersion" + GetDateTimeString (12) featureLyr = "lyr" + GetDateTimeString (12) prindiversioon # Server = *** # Service = *** user = "dbo" # Pass = *** # SDE = 'E:  C_Drive_files  Administrator'  311Request  data  ServiceRequest.sde 'temploc = "" fil = "SDETempConn" env.overwriteOutput = True #Create Version print "Versiooni loomine" arcpy.CreateVersion_management (GetSRConfig.SDEConnFile, Parent, version, "PUBLIC") VersionName = user.upper () + "". + versioon #Create new connection workspace = os.path.join (temploc, fil + ".sde") printimistööala #Layers P6feature = os.path.join (workspace, P6featureName) arcpy.MakeFeatureLayer_management (GetSRConfig.SDELayer, featureLyr) # Alusta printimise muutmist "Redigeerimise algatamine" edit = arcpy.da.Editor (GetSRConfig.SDEConnFile) edit.startEditing () edit.startOperation () #Test Cursor print "Testing cursor" P6Cursor = arcpy.da.UpdateCursor (featureLyr, ["VehicleNam "]) P6Cursori rea jaoks: prindi rida [0] del rida del P6Cursor #Peata/salvesta redigeerimine edit.stopOperation () print" Redigeerimise peatamine "edit.stopEditing (" True ") #Lülitu versiooniversioonile" Versiooni vahetamine "arcpy .ChangeVersion_management (featureLyr, "TRANSACTIONAL", Parent) #Reconcile and post print "Lepitamine ja postitamine" arcpy.ReconcileVersions_management (GetSRConfig.SDEConnFile, "", Parent, VersionName, with_post = "POST" DELET_V)

Võimalik, et soovite kontrollida oma litsentsihaldurit või ühendust sellega.

Alustasin selle probleemi ilmnemist keset pythoni kodeerimise seanssi. Asjad töötasid hästi, kuni järsku hakkasin seda viga importimise ajal tõmbama. Täpsemalt env osa kohta.

Olen avastanud, et minu ja meie litsentsihaldurite vahel on probleem. Olen VPN -i meie võrku ühendatud. Töölauale kaugjuhtimisel on kõik hästi. Kui proovin ArcGIS -i administraatori kaudu ühenduse luua meie kahe litsentsihalduriga, näen vahelduvaid tulemusi.
Olen LM -ide süsteemiadministraator ja kui nendega otse ühendust luua, ei näita need probleemi.

Minu puhul on probleem seotud VPN -tunneli ja LM -idega.


Pärast tundide kulutamist selle probleemi lahendamiseks leidsin järgmise.

  1. Kontrollige, kas andmebaas on versioonitud või mitte.
  2. Vältige pesastatud kursori kasutamist. Vabastage kindlasti kõik kursorid ja reaobjektid kohe, kui olete nendega lõpetanud.
  3. Väike töö, mille ümber ma olen pärast pesastatud kursori stsenaariumis võitlemist kasutanud:- Olin loonud kihi objekti järgmiselt:arcpy.SelectLayerByAttribute_management (inputFC, 'my_lyr', "" FieldName "= '" + SearchValue + "'")ja eemaldasin otsingukursori. See täitis minu eesmärki vältida pesastatud kursori stsenaariumi ja mul hakati filtreeritud objekte hankima, seejärel kasutasin seda soovitulemuste määramiseks (nii sisestamise kui ka värskendamise toimingud).
  4. Kui andmebaas on versioonivaba, siis veenduge, et kasutate järgmist koodi.edit.startEditing (tõsi, vale) edit.startOperation ()
  5. KasutageKoosmärksõnakoos arcpy.da.SearchCursor/arcpy.da.InsertCursorkursor. See tagab, et teie mälu vabaneb sobivalt ilma kasutamisetadelmärksõna
  6. kuiedit.stopEditing ()operatsioon, mis annab teile palju aega (SystemError: vea tagastamine ilma eranditeta: ) seejärel kommenteerige seda. (Naljakas, kuid fakt on see, et minu skript töötas, kui käivitan koodi iseseisvalt, nt: käsuviip või pyscriptor aga niipea, kui muutsin oma skripti GP -teenuseks, hakkas see mulle viga andma, nii et olen kommenteerinudedit.stopEditing ()ja liikusin edasi, kuna andmed salvestati andmebaasi), usun, et see on midagi pythoni versiooniga, mida kasutatakse ArcMAPis ja ArcPy's, kuid ei saa kunagi täielikku selgitust.

Vaata videot: Teoría Costos de Transacción.. Producción Rafa NASSIS u0026 Tiby VILLALBA