Есть следующий код:
for row in arcpy.da.SearchCursor(db_from, fields, where_clause="objectid < 11111"):
value_from = list(row)
for rowto in arcpy.da.SearchCursor(db_to, fields, where_clause="uid = '" + str(row[0]) + "'"):
value_to = list(rowto)
if(set(value_from) == set(value_to)): # Данные одинаковые
same +=1
print "data is same"
else:
with arcpy.da.UpdateCursor(db_to, fields, where_clause="uid = '" + str(row[0]) + "'") as cursor:
for x in cursor:
cursor.updateRow(value_from)
updated +=1
print "data update"
else:
to_cursor.insertRow(value_from) # мне кажется ошибка где то тут
print "Inserted"
print "Same Data: ", str(same)
print "Updated Data: ", str(updated)
проблема возникает в следующем месте:
data update
data update
data update
data update
data update
Inserted
Traceback (most recent call last):
File "C:\code\Python\work\dbsync.py", line 69, in <module>
for x in cursor:
RuntimeError: workspace already in transaction mode
В каком месте мне нужно закрывать транзацию? Как я понимаю проблема возникает в тот момент когда я в БД db_to делаею в начале выборку, а потом пытаюсь в нее вставку сделать. Верно? Обновление проходит нормально, а первая же вставка все рушит.
Если что использую
ArсPy