I answered a question [here](https://gis.stackexchange.com/a/146418/18630) that is probably similar to what you want (the second part of the answer, which also links to [this answer](https://gis.stackexchange.com/a/87055/18630) regarding Bakeries and States...).  Using Spatial Join works also, but it creates another layer which might not be desirable.   

Your code might look something like this...

    import arcpy
    
    # Set overwrite option
    arcpy.env.overwriteOutput = True
    
    # KEEPING ORIGINAL LAYERS (NOT CREATING ADDITIONAL "JOINED" LAYER)
    # Create FeatureLayers
    arcpy.MakeFeatureLayer_management("C:/YourFolder/YourPointsLayer.shp", "lyr_PointsLayer")
    arcpy.MakeFeatureLayer_management("C:/YourFolder/SchoolDistricts.shp", "lyr_SchoolDistricts")
    
   
    # Create a search cursor for the school districts
    rows = arcpy.SearchCursor("lyr_SchoolDistricts")
    for row in rows:
        # What you'll do is select each school district one at a time, and then select all the points in that school district and calculate the SCHOOLDIST field
        # NOTE: If you are using not using shapefiles, then you'll have to change the FID in the line below to OBJECTID (or similar)
        arcpy.SelectLayerByAttribute_management("lyr_SchoolDistricts", "NEW_SELECTION", "\"FID\" = " + str(row.getValue("FID")))
        arcpy.SelectLayerByLocation_management("lyr_PointsLayer", "INTERSECT", "lyr_SchoolDistricts", "", "NEW_SELECTION")
        arcpy.CalculateField_management("lyr_PointsLayer", "SCHOOLDIST", "'{0}'".format(str(row.getValue("DISTRICT"))), "PYTHON_9.3", "")
        print "Finished processing " + str(row.getValue("DISTRICT"))


In the code above, the "DISTRICT" field is the name of the field in the School Districts layer, and the "SCHOOLDIST" field is the field that's in the Points layer...