I copied the code from above into Spyder, and pasted it into a syntax highlighter window; I hope I got the indents correct. Personally, I try to avoid nesting cursors within cursors. They tend to get ugly as you are experiencing.
As Joshua points out, your duplicate use or 'row' is problematic. If you are going to nest your cursors, I suggest associating the rows with the cursor like ucursor/urow, icursor/irow.
Also, why the 'breaks' at lines 45 & 50: again, just personal preference, I'd go with else: pass as shown below:
arcpy.env.workspace = r'Database Connections\dev-sde.sde'
ws = arcpy.env.workspace
edit = arcpy.da.Editor(ws)
edit.startEditing(False, True)
edit.startOperation()
fcs = (r"dev.sde.wControlValve",r"dev.sde.wSystemValve",r"dev.sde.wFitting")
dt = datetime.datetime.strptime("01/01/1970", "%d/%m/%Y")
fd = r"dev.sde.WaterDistribution"
outer_cnt= 0
inner_cnt = 0
with arcpy.da.UpdateCursor("{0}\{1}".format(fd,r"dev.sde.wPump"),[r"project",r"SHAPE@X", "SHAPE@Y"]) as ucursor:
for row in ucursor:
new_geom = ""
print(row[0], row[1], row[2])
print(type(row[0]))
print(type(row[1]))
src_prj = row[0]
found = "false"
print(found =="true")
print(src_prj)
x = 0.0
y = 0.0
for fc in fcs:
print(fc)
with arcpy.da.SearchCursor(("{0}\{1}".format(fd, fc)), [r"project", r"SHAPE@X", r"SHAPE@Y"]) as icursor:
for row in icursor:
if row[0]==src_prj:
x = row[1]
y = row[2]
print (type(x))
found = "true"
break
if found == "true":
print(found)
break
if found == "true":
print(type(row[1]))
print(type(row[2]))
print(type(x))
row[1] = x
row[2] = y
ucursor.updateRow(row)
edit.stopOperation()
edit.stopEditing(True)
del icursor
del ucursor
That should just about do it....