With the following, I am trying to select each polygon by its name, select points from another feature class that are within the selected polygon, then calculate a field using the same name that was used to select the polygon (by attributes). A spatial intersect, or any other method that results in creating a new FC as output and having to do joins won't work here, as this is (hopefully) to be an unattended nightly update script. It iterates through the polygons fine, but the result is that ALL points get the name of the last polygon.
from arcpy import env
update_feature_class = r'C:\Users\tcolson\Documents\ArcGIS\Projects\MyProject\MyProject.gdb\GRSM_RESEARCH_LOCATIONS'
county_feature_class = r'C:\Users\tcolson\Documents\ArcGIS\Projects\MyProject\MyProject.gdb\CountyBoundaries'
with arcpy.da.SearchCursor(county_feature_class,['SHAPE@','NAME']) as cursor:
for row in cursor:
expression = "NAME = '"+row+"'"
arcpy.SelectLayerByAttribute_management (county_feature_class, "NEW_SELECTION", expression)
arcpy.SelectLayerByLocation_management(update_feature_class, "INTERSECT", county_feature_class)
arcpy.CalculateField_management(update_feature_class, "COUNTY","'"+row+"'", "PYTHON3")