I created a Python script that calculates fields of newly added points. When I run the script in ArcGIS Pro 2.5 everything works correctly, but when I upgraded to version 2.7.3 of Pro, 3 of the fields no longer populate. I don't get any errors from the script. Thanks in advance for any help!
import arcpy
#Setup the user inputs
customerPointSelection = arcpy.GetParameterAsText(0)
customerPoint = arcpy.GetParameterAsText(1)
automatedCollection = arcpy.GetParameterAsText(2)
#Create a spatial join between customerPointSelection and automatedCollection
arcpy.SpatialJoin_analysis(customerPointSelection, automatedCollection, "in_memory/CustomerAutoJoin", "JOIN_ONE_TO_MANY","KEEP_COMMON","","WITHIN")
#Create a new join to the customerPoint
arcpy.AddJoin_management(customerPoint,"OBJECTID","in_memory/CustomerAutoJoin","TARGET_FID","KEEP_COMMON")
#Calculate the needed fields
arcpy.CalculateField_management(customerPoint,"SEC_NAME","!CustomerAutoJoin.SEC_NAME_1!","PYTHON3","","TEXT")
arcpy.CalculateField_management(customerPoint,"COLLECT_DAY","!CustomerAutoJoin.DAY!","PYTHON3","","TEXT")
arcpy.management.CalculateField(customerPoint,"QUAD","!CustomerAutoJoin.QUAD_1!","PYTHON3","","TEXT")
arcpy.CalculateField_management(customerPoint,"HELP_SECTION","!CustomerAutoJoin.HELP_SECTION_1!","PYTHON3","","SHORT")
#Remove the join and delete the in memory feature
arcpy.RemoveJoin_management(customerPoint)
arcpy.Delete_management("in_memory/CustomerAutoJoin")
from
Calculate Field (Data Management)—ArcGIS Pro | Documentation
You can examine the code and its location and you will see that both methods lead to the exact same function in the same file. The "dot notation" is now preferred but the other is still usable.
from arcpy import CalculateField_management
from arcpy.management import CalculateField
# ---- use help on either one
Source:
@gptooldoc('CalculateField_management', None)
def CalculateField(in_table=None, field=None, expression=None, expression_type=None, code_block=None, field_type=None, enforce_domains=None):
.... snip ....
File: c:\arc_pro\resources\arcpy\arcpy\management.py
Type: function
Thank you @r3weber and @DanPatterson for suggesting using the dot notation. I changed the script to include the dot notation and was getting the same results. I looked at the results from the spatial join layer and the spatial join layer isn't getting all the attributes from the polygon layer, but I'm not exactly sure why some of the fields aren't getting populated even though the polygon layer has attributes for those fields.
I've had mixed results between using 'in_memory' and 'memory' with python 3 scripts. Some work with using 'memory' and others work with using 'in_memory'. If you haven't already, try just 'memory' or writing to disk to see the results at each step.
I've also had mixed results with using dot notation while using pycharm. Ran as a script tool, it works but when I run it externally as a standalone script it throws errors.