Hi,
I'm finally converting 2x scripts to 3x and I'm getting poor results from the same code. Exact same code running under the two different environments, different results.
Here is the code. Simple merge of three layers into one, mapping only one field. In 3x it will not populate the field from one of the layers. Works fine in 2x. What changed or what do I need to change in the new API.
I should mention that for testing purposes, all FCs are in the same, new file geodatabase.
fldFolio = arcpy.Field()
fldFolio.name = 'Folio'
fldFolio.aliasName = 'Folio'
fldFolio.type = 'Text'
fldFolio.length = 12
fldFolio.isNullable = True
fm = arcpy.FieldMap()
fm.outputField = fldFolio
fm.addInputField(PIDless_lyr, 'Folio', 0, 12)
fm.addInputField(target_ParcelsSingle, 'BCA_Legal_Folio', 0, 12)
fm.addInputField(target_ParcelsStrata, 'BCA_Legal_Folio', 0, 12)
fms = arcpy.FieldMappings()
fms.addFieldMap(fm)
# merge everything
print('Merge all Except MHs')
arcpy.Merge_management([PIDless_lyr, target_ParcelsSingle, target_ParcelsStrata], target_ParcelsTmp1, fms)
Solved! Go to Solution.
one of the layers I'm Merging is an in-memory Feature Layer. Field Mapping did not like this. I copied the data to a physical Feature Class and all is well.
bug?....
one of the layers I'm Merging is an in-memory Feature Layer. Field Mapping did not like this. I copied the data to a physical Feature Class and all is well.
bug?....
Not sure if this is your issue, but I was also having trouble with upgrading some field mapping scripts to Python 3.x. I noticed that attributes were blank in the output even though they were properly mapped. When I printed the field mapping result, I noticed the slashes were opposite the ones in the Python code that is created from Pro's append gp tool. So when I added .exportToString().replace("/","\\"), on to the end of the field mapping result, the rest of my code worked and all my values populate now.