An easier way may be to use Spatial Join, but if you want to do this in the same process as you've described above, you would use Select by Location and then CalculateField.
One way to identify the Python code involved is to set up a Model in Model Builder, and exporting the results to Python.
Here's a mockup - be sure to check for syntax errors as I haven't run this.
# create a layer because select by location works on layers
'lyr', overlap_type='intersect', select_features='districts') # look for a different method if needed
fieldtocalculate = # populate with the name of the field in the districts file
calcExpression = # Python format is !fieldname!
arcpy.CalculateField_management("parcellayer", fieldnametopopulate, '!districtfieldname!', "PYTHON_9.3")
The Spatial Join option is something like the below:
arcpy.SpatialJoin_analysis(targetFeatures, joinFeatures, outfc, "#", "#", fieldmappings)
By default this would be a 1:1 join and would keep all of the fields from the districts, not just the District Name, but you can adjust the fields.