<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: General Function Failure With Cursor in Python Script in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541305#M72909</link>
    <description>&lt;P&gt;I am going to attempt to rerun this, I have made the suggested changes, but want to verify I am inserting the code into the correct location. I have a long header in my script so our line numbers are not the same.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;# Create a search cursor for the first feature class&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"finding new AMI exports"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;SPAN&gt;# Create a search cursor for feature_class1 to populate unique_values set&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class1&lt;SPAN&gt;, &lt;/SPAN&gt;[field_to_compare_1]) &lt;SPAN&gt;as &lt;/SPAN&gt;cursor1:&lt;BR /&gt;    &lt;SPAN&gt;for &lt;/SPAN&gt;row1 &lt;SPAN&gt;in &lt;/SPAN&gt;cursor1:&lt;BR /&gt;        value = row1[&lt;SPAN&gt;0&lt;/SPAN&gt;]&lt;BR /&gt;        unique_values.add(value)&lt;BR /&gt;        &lt;BR /&gt;&lt;SPAN&gt;#ESRI COMMUNITY SUGGESTION--------------------------------------------------------------&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class2&lt;SPAN&gt;, &lt;/SPAN&gt;[field_to_compare_2]) &lt;SPAN&gt;as &lt;/SPAN&gt;Cursor2:&lt;BR /&gt;    &lt;SPAN&gt;for &lt;/SPAN&gt;row2 &lt;SPAN&gt;in &lt;/SPAN&gt;Cursor2:&lt;BR /&gt;        &lt;SPAN&gt;print&lt;/SPAN&gt;(row2)  &lt;SPAN&gt;# Check the output&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;break&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;#---------------------------------------------------------------------------------------    &lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;# Create a search cursor for feature_class2 to compare with unique_values&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class2&lt;SPAN&gt;, &lt;/SPAN&gt;[&lt;SPAN&gt;'OID@'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;field_to_compare_2&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'SHAPE@'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'*'&lt;/SPAN&gt;]) &lt;SPAN&gt;as &lt;/SPAN&gt;cursor2:&lt;BR /&gt;    &lt;SPAN&gt;for &lt;/SPAN&gt;row2 &lt;SPAN&gt;in &lt;/SPAN&gt;cursor2:&lt;BR /&gt;        value2 = row2[&lt;SPAN&gt;1&lt;/SPAN&gt;]&lt;BR /&gt;        &lt;SPAN&gt;if &lt;/SPAN&gt;value2 &lt;SPAN&gt;not in &lt;/SPAN&gt;unique_values:&lt;BR /&gt;            differences.append(row2)&lt;/PRE&gt;&lt;P&gt;Also, for the wildcard suggestion, is it suggested that the '*' be removed?&lt;/P&gt;&lt;/DIV&gt;</description>
    <pubDate>Mon, 23 Sep 2024 13:12:37 GMT</pubDate>
    <dc:creator>AdamTerrell</dc:creator>
    <dc:date>2024-09-23T13:12:37Z</dc:date>
    <item>
      <title>General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537519#M72810</link>
      <description>&lt;P&gt;I AM NOT A DEVELOPER. Zero Python experience.&lt;BR /&gt;&lt;BR /&gt;I have taken over a role where my predecessor automated nearly everything with Python scripts. To this point, I have been able to maintain and/or fix various scripts using ChatGPT.&lt;/P&gt;&lt;P&gt;I have a script designed to update water meter usage and plot new meters.&lt;/P&gt;&lt;P&gt;The script runs fine and updates the water meter usage, but it fails when it reaches the block of code that involves a cursor to look for new meters.&lt;/P&gt;&lt;P&gt;After days of attempting to solve this myself with the assistance of ChatGPT. I figured I would, at the risk of looking like a fool, reach out here.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdamTerrell_0-1726083556516.png" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/114839i5AFDCD61590BF540/image-size/medium?v=v2&amp;amp;px=400" role="button" title="AdamTerrell_0-1726083556516.png" alt="AdamTerrell_0-1726083556516.png" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Sep 2024 19:58:42 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537519#M72810</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-11T19:58:42Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537522#M72811</link>
      <description>&lt;P&gt;No worries.&lt;/P&gt;&lt;P&gt;Unfortunately, without the actual code, we're not going to be able to help you. Could you post your code block here, too?&lt;/P&gt;</description>
      <pubDate>Wed, 11 Sep 2024 20:01:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537522#M72811</guid>
      <dc:creator>AlfredBaldenweck</dc:creator>
      <dc:date>2024-09-11T20:01:29Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537525#M72812</link>
      <description>&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;# import req libraries and packages&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;arcpy&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;os&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;datetime&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;pandas &lt;SPAN&gt;as &lt;/SPAN&gt;pd&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;datetime&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;tempfile&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;shutil&lt;BR /&gt;&lt;SPAN&gt;import &lt;/SPAN&gt;schedule&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;def &lt;/SPAN&gt;&lt;SPAN&gt;wm_update&lt;/SPAN&gt;():  &lt;SPAN&gt;# if being called from script place req var in ()&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;import &lt;/SPAN&gt;csv&lt;BR /&gt;    &lt;SPAN&gt;# To allow overwriting outputs change overwriteOutput option to True.&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;global &lt;/SPAN&gt;csv_file_path&lt;BR /&gt;    arcpy.env.overwriteOutput = &lt;SPAN&gt;True&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;# variables&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    # dynamic var&lt;BR /&gt;&lt;/SPAN&gt;    now = datetime.datetime.now()&lt;BR /&gt;    time_stamp = now.strftime(&lt;SPAN&gt;"%m%d%Y"&lt;/SPAN&gt;)&lt;BR /&gt;    AMI_export_Folder = &lt;SPAN&gt;r"C:\Users\AdamT\OneDrive - bentonvillear.com\Attachments\AMI_Export"&lt;BR /&gt;&lt;/SPAN&gt;    WaterMeter = []&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"Start Time: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;now&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;for &lt;/SPAN&gt;dirpath&lt;SPAN&gt;, &lt;/SPAN&gt;dirnames&lt;SPAN&gt;, &lt;/SPAN&gt;filenames &lt;SPAN&gt;in &lt;/SPAN&gt;os.walk(AMI_export_Folder):&lt;BR /&gt;        &lt;SPAN&gt;for &lt;/SPAN&gt;file_name &lt;SPAN&gt;in &lt;/SPAN&gt;filenames:&lt;BR /&gt;            &lt;SPAN&gt;if &lt;/SPAN&gt;file_name.endswith(&lt;SPAN&gt;".xlsx"&lt;/SPAN&gt;):&lt;BR /&gt;                &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"Found XLSX: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;file_name&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;                input_file = os.path.join(AMI_export_Folder&lt;SPAN&gt;, &lt;/SPAN&gt;file_name)&lt;BR /&gt;                temp_csv_file = tempfile.NamedTemporaryFile(&lt;SPAN&gt;mode&lt;/SPAN&gt;=&lt;SPAN&gt;'w'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;delete&lt;/SPAN&gt;=&lt;SPAN&gt;False, &lt;/SPAN&gt;&lt;SPAN&gt;newline&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;                &lt;SPAN&gt;# Use pandas to read the XLSX file and save it as CSV&lt;BR /&gt;&lt;/SPAN&gt;                df = pd.read_excel(input_file)&lt;BR /&gt;                df.to_csv(temp_csv_file.name&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;index&lt;/SPAN&gt;=&lt;SPAN&gt;False&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;                &lt;SPAN&gt;# Remove the first row from the CSV&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;with &lt;/SPAN&gt;&lt;SPAN&gt;open&lt;/SPAN&gt;(temp_csv_file.name&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'r'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;newline&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;) &lt;SPAN&gt;as &lt;/SPAN&gt;file&lt;SPAN&gt;, &lt;/SPAN&gt;tempfile.TemporaryFile(&lt;SPAN&gt;mode&lt;/SPAN&gt;=&lt;SPAN&gt;'w+'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;delete&lt;/SPAN&gt;=&lt;SPAN&gt;False, &lt;/SPAN&gt;&lt;SPAN&gt;newline&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;) &lt;SPAN&gt;as &lt;/SPAN&gt;temp_file:&lt;BR /&gt;                    reader = csv.reader(file)&lt;BR /&gt;                    writer = csv.writer(temp_file)&lt;BR /&gt;                    &lt;SPAN&gt;for &lt;/SPAN&gt;i&lt;SPAN&gt;, &lt;/SPAN&gt;row &lt;SPAN&gt;in &lt;/SPAN&gt;&lt;SPAN&gt;enumerate&lt;/SPAN&gt;(reader):&lt;BR /&gt;                        &lt;SPAN&gt;if &lt;/SPAN&gt;i &amp;gt; &lt;SPAN&gt;2&lt;/SPAN&gt;:&lt;BR /&gt;                            writer.writerow(row)&lt;BR /&gt;&lt;BR /&gt;                shutil.move(temp_file.name&lt;SPAN&gt;, &lt;/SPAN&gt;input_file.replace(&lt;SPAN&gt;".xlsx"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;".csv"&lt;/SPAN&gt;))&lt;BR /&gt;                WaterMeter.append(input_file.replace(&lt;SPAN&gt;".xlsx"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;".csv"&lt;/SPAN&gt;))&lt;BR /&gt;                os.remove(input_file)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;elif &lt;/SPAN&gt;file_name.endswith(&lt;SPAN&gt;".csv"&lt;/SPAN&gt;):&lt;BR /&gt;                &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"Found: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;file_name&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;                input_file = os.path.join(AMI_export_Folder&lt;SPAN&gt;, &lt;/SPAN&gt;file_name)&lt;BR /&gt;                temp_file = tempfile.NamedTemporaryFile(&lt;SPAN&gt;mode&lt;/SPAN&gt;=&lt;SPAN&gt;'w'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;delete&lt;/SPAN&gt;=&lt;SPAN&gt;False, &lt;/SPAN&gt;&lt;SPAN&gt;newline&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;                &lt;SPAN&gt;# Remove the first row(s) from the CSV&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;with &lt;/SPAN&gt;&lt;SPAN&gt;open&lt;/SPAN&gt;(input_file&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'r'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;newline&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;) &lt;SPAN&gt;as &lt;/SPAN&gt;file&lt;SPAN&gt;, &lt;/SPAN&gt;temp_file:&lt;BR /&gt;                    reader = csv.reader(file)&lt;BR /&gt;                    writer = csv.writer(temp_file)&lt;BR /&gt;                    &lt;SPAN&gt;for &lt;/SPAN&gt;i&lt;SPAN&gt;, &lt;/SPAN&gt;row &lt;SPAN&gt;in &lt;/SPAN&gt;&lt;SPAN&gt;enumerate&lt;/SPAN&gt;(reader):&lt;BR /&gt;                        &lt;SPAN&gt;if &lt;/SPAN&gt;i &amp;gt; &lt;SPAN&gt;2&lt;/SPAN&gt;:&lt;BR /&gt;                            writer.writerow(row)&lt;BR /&gt;&lt;BR /&gt;                shutil.move(temp_file.name&lt;SPAN&gt;, &lt;/SPAN&gt;input_file)&lt;BR /&gt;                WaterMeter.append(input_file)&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;WaterMeter&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;    &lt;SPAN&gt;# static var&lt;BR /&gt;&lt;/SPAN&gt;    existing_waterMeter_points = &lt;SPAN&gt;r"I:\GIS\Automation\Scripts\WaterMeter1\WaterMeter1.gdb\wWater_Meter1"  &lt;/SPAN&gt;&lt;SPAN&gt;# will need to be adjusted for sde feature&lt;BR /&gt;&lt;/SPAN&gt;    waterMeter_points_location = &lt;SPAN&gt;r"I:\GIS\a_SDE_Connections\Water_System_BWU_Edit.sde\Water_System_BWU.DBO.wUtility_Network\Water_System_BWU.DBO.Water_Meter_Locations"  &lt;/SPAN&gt;&lt;SPAN&gt;# will need to be adjusted for sde feature&lt;BR /&gt;&lt;/SPAN&gt;    processing_gdb = &lt;SPAN&gt;r"I:\GIS\ESRI_ArcPro_Edit\zDBO\default.gdb"&lt;BR /&gt;&lt;/SPAN&gt;    new_waterMeters = &lt;SPAN&gt;r'I:\GIS\ESRI_ArcPro_Edit\zDBO\default.gdb\New_WaterMeters' &lt;/SPAN&gt;+ time_stamp&lt;BR /&gt;    out_table = &lt;SPAN&gt;r"I:\Total Data\Full Export usage\GIS_AMI_Export" &lt;/SPAN&gt;+ time_stamp + &lt;SPAN&gt;".csv"&lt;BR /&gt;&lt;/SPAN&gt;    arcpy.CheckOutExtension(&lt;SPAN&gt;"Spatial"&lt;/SPAN&gt;)&lt;BR /&gt;    crs = arcpy.SpatialReference(&lt;SPAN&gt;4326&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;    arcpy.EnvManager(&lt;SPAN&gt;scratchWorkspace&lt;/SPAN&gt;=arcpy.env.scratchGDB&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;workspace&lt;/SPAN&gt;=processing_gdb)&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;# disconnect user from sde for script to implement&lt;BR /&gt;&lt;/SPAN&gt;    sde_connection =&lt;SPAN&gt;r"I:\GIS\a_SDE_Connections\Water_System_BWU.sde"&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;# start script&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    # create points&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"Starting Processing for: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;WaterMeter&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;    &lt;SPAN&gt;try&lt;/SPAN&gt;:&lt;BR /&gt;        &lt;SPAN&gt;for &lt;/SPAN&gt;csv &lt;SPAN&gt;in &lt;/SPAN&gt;WaterMeter:&lt;BR /&gt;            water_meter_points = processing_gdb + &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;\\&lt;/SPAN&gt;&lt;SPAN&gt;TempWaterMeterPoints" &lt;/SPAN&gt;+ time_stamp&lt;BR /&gt;            &lt;SPAN&gt;# plot XY&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.management.XYTableToPoint(&lt;SPAN&gt;in_table&lt;/SPAN&gt;=csv&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_feature_class&lt;/SPAN&gt;=water_meter_points&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;x_field&lt;/SPAN&gt;=&lt;SPAN&gt;'Longitude'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                            &lt;SPAN&gt;y_field&lt;/SPAN&gt;=&lt;SPAN&gt;'Latitude'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;z_field&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;coordinate_system&lt;/SPAN&gt;=crs)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# remove service type "Electric" and "NOT YET INSTALLED" value&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"Refining points: removing service type [ Electric ] and Service Serial Number [ NOT YET INSTALLED ]"&lt;/SPAN&gt;)&lt;BR /&gt;            water_meter_refined = processing_gdb + &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;\\&lt;/SPAN&gt;&lt;SPAN&gt;RefinedPoints" &lt;/SPAN&gt;+ time_stamp&lt;BR /&gt;            arcpy.analysis.Select(&lt;BR /&gt;                &lt;SPAN&gt;in_features&lt;/SPAN&gt;=water_meter_points&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;out_feature_class&lt;/SPAN&gt;=water_meter_refined&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;where_clause&lt;/SPAN&gt;=&lt;SPAN&gt;"ServiceType &amp;lt;&amp;gt; 'Electric' And OldSerialNumber &amp;lt;&amp;gt; 'NOT YET INSTALLED'"&lt;BR /&gt;&lt;/SPAN&gt;            )&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# create field LocID for join calc field&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Creating new field for LocID and calculating field"&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.AddField(&lt;SPAN&gt;in_table&lt;/SPAN&gt;=water_meter_refined&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_name&lt;/SPAN&gt;=&lt;SPAN&gt;"LocID"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"TEXT"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                      &lt;SPAN&gt;field_precision&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_scale&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_length&lt;/SPAN&gt;=&lt;SPAN&gt;'255'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                      &lt;SPAN&gt;field_alias&lt;/SPAN&gt;=&lt;SPAN&gt;'LocID'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_is_nullable&lt;/SPAN&gt;=&lt;SPAN&gt;'NULLABLE'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_is_required&lt;/SPAN&gt;=&lt;SPAN&gt;'NON_REQUIRED'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                      &lt;SPAN&gt;field_domain&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=water_meter_refined&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"LocID"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"remove_chars(!SocketID!)"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;"""def remove_chars(value):&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;                return value[3:-5]"""&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"TEXT"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;BR /&gt;&lt;/SPAN&gt;            )&lt;BR /&gt;            &lt;SPAN&gt;# join from water meter 1 based on LOCID and SocketID and export features&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Joining WaterMeter1 to new WaterMeter Location points"&lt;/SPAN&gt;)&lt;BR /&gt;            out_layer = &lt;SPAN&gt;"WaterMeterRefined"&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.management.MakeFeatureLayer(&lt;SPAN&gt;in_features&lt;/SPAN&gt;=water_meter_refined&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_layer&lt;/SPAN&gt;=out_layer&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;where_clause&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                              &lt;SPAN&gt;workspace&lt;/SPAN&gt;=processing_gdb&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_info&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;            out_layer_wm = &lt;SPAN&gt;"watermeter1"&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.management.MakeFeatureLayer(&lt;SPAN&gt;in_features&lt;/SPAN&gt;=existing_waterMeter_points&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_layer&lt;/SPAN&gt;=out_layer_wm&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                              &lt;SPAN&gt;where_clause&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                              &lt;SPAN&gt;workspace&lt;/SPAN&gt;=processing_gdb&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_info&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.AddJoin(&lt;SPAN&gt;in_layer_or_view&lt;/SPAN&gt;=out_layer&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;in_field&lt;/SPAN&gt;=&lt;SPAN&gt;'LocID'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;join_table&lt;/SPAN&gt;=out_layer_wm&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                     &lt;SPAN&gt;join_field&lt;/SPAN&gt;=&lt;SPAN&gt;'LOCID'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;join_type&lt;/SPAN&gt;=&lt;SPAN&gt;'KEEP_ALL'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;index_join_fields&lt;/SPAN&gt;=&lt;SPAN&gt;'INDEX_JOIN_FIELDS'&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;# export ami water meter joined with water meter addresses&lt;BR /&gt;&lt;/SPAN&gt;            out_wmp = processing_gdb + &lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;\\&lt;/SPAN&gt;&lt;SPAN&gt;Watermeter_loc_join" &lt;/SPAN&gt;+ time_stamp&lt;BR /&gt;            arcpy.conversion.ExportFeatures(&lt;SPAN&gt;in_features&lt;/SPAN&gt;=out_layer&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_features&lt;/SPAN&gt;=out_wmp&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;where_clause&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                            &lt;SPAN&gt;use_field_alias_as_name&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                            &lt;SPAN&gt;field_mapping&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;sort_field&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# before joining ami export to existing water meter locations calc fields in water meter loc&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Setting Hist Read in current Water Meter Points"&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=waterMeter_points_location&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"LastReading"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"!CurrentReading1!"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"double"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;BR /&gt;&lt;/SPAN&gt;            )&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# join the weekly ami export based on socketID&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Joining ami export meter points"&lt;/SPAN&gt;)&lt;BR /&gt;            join_oldtoNew = &lt;SPAN&gt;"temp"&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.management.MakeFeatureLayer(&lt;SPAN&gt;in_features&lt;/SPAN&gt;=waterMeter_points_location&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_layer&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                              &lt;SPAN&gt;where_clause&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                              &lt;SPAN&gt;workspace&lt;/SPAN&gt;=processing_gdb&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_info&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;            join_newData = &lt;SPAN&gt;"newtemp"&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.management.MakeFeatureLayer(&lt;SPAN&gt;in_features&lt;/SPAN&gt;=out_wmp&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_layer&lt;/SPAN&gt;=join_newData&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                              &lt;SPAN&gt;where_clause&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                              &lt;SPAN&gt;workspace&lt;/SPAN&gt;=processing_gdb&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_info&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            arcpy.management.AddJoin(&lt;SPAN&gt;in_layer_or_view&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;in_field&lt;/SPAN&gt;=&lt;SPAN&gt;'SocketID'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;join_table&lt;/SPAN&gt;=join_newData&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                     &lt;SPAN&gt;join_field&lt;/SPAN&gt;=&lt;SPAN&gt;'SocketID'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;join_type&lt;/SPAN&gt;=&lt;SPAN&gt;'KEEP_COMMON'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;index_join_fields&lt;/SPAN&gt;=&lt;SPAN&gt;'INDEX_JOIN_FIELDS'&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# set new current reading and date based on the join&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;            # disconnect users after ever calc to remove futura from automated connection&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;            # could optionally turn connection properties off which script runs, then turn them back on upon completion&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Updating Following Fields"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"...CurrentReading..."&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"Water_System_BWU.DBO.Water_Meter_Locations.CurrentReading1"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"!Watermeter_loc_join" &lt;/SPAN&gt;+ time_stamp+&lt;SPAN&gt;".CurrentReading1!"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"double"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;# current reading date&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"...LastReadDateUTC..."&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"Water_System_BWU.DBO.Water_Meter_Locations.LastReadDateUTC"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"!Watermeter_loc_join" &lt;/SPAN&gt;+ time_stamp+&lt;SPAN&gt;".LastReadDateUTC!"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"double"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;# update meter METNUM&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"...METNUM..."&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"Water_System_BWU.DBO.Water_Meter_Locations.METNUM"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"!Watermeter_loc_join" &lt;/SPAN&gt;+ time_stamp+&lt;SPAN&gt;".SerialNumber!"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"double"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;# update description&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"...Description..."&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"Water_System_BWU.DBO.Water_Meter_Locations.Description"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"!Watermeter_loc_join" &lt;/SPAN&gt;+ time_stamp+&lt;SPAN&gt;".Description!"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"double"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;# update the ratecode&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"...RateCode..."&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"Water_System_BWU.DBO.Water_Meter_Locations.RateCode"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"!Watermeter_loc_join" &lt;/SPAN&gt;+ time_stamp+&lt;SPAN&gt;".RateCode!"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"double"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"...INSTALL_DAY..."&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"Water_System_BWU.DBO.Water_Meter_Locations.LOC_REMARK"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"!Watermeter_loc_join" &lt;/SPAN&gt;+ time_stamp+&lt;SPAN&gt;".InstallDateUTC!"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"TEXT"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"...Size..."&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"Water_System_BWU.DBO.Water_Meter_Locations.SIZE"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"!Watermeter_loc_join" &lt;/SPAN&gt;+ time_stamp+&lt;SPAN&gt;".Size1!"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"TEXT"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# remove join&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"...Remove join..."&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.RemoveJoin(&lt;BR /&gt;                &lt;SPAN&gt;in_layer_or_view&lt;/SPAN&gt;=join_oldtoNew&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;join_name&lt;/SPAN&gt;=&lt;SPAN&gt;"Watermeter_loc_join" &lt;/SPAN&gt;+ time_stamp)&lt;BR /&gt;            &lt;SPAN&gt;# calc the difference in use between reads in the hist change field&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.DisconnectUser(sde_connection&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;"ALL"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"...Historic Change..."&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.management.CalculateField(&lt;BR /&gt;                &lt;SPAN&gt;in_table&lt;/SPAN&gt;=waterMeter_points_location&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;"HistoricChange"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"!CurrentReading1! - !LastReading!"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;code_block&lt;/SPAN&gt;=&lt;SPAN&gt;""&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;"TEXT"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_ENFORCE_DOMAINS"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# find differences in socketID to find new meters&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;            # Specify the field to compare&lt;BR /&gt;&lt;/SPAN&gt;            feature_class2 = water_meter_refined&lt;BR /&gt;            feature_class1 = waterMeter_points_location&lt;BR /&gt;            field_to_compare_1 = &lt;SPAN&gt;'SocketID'  &lt;/SPAN&gt;&lt;SPAN&gt;# Field name in feature_class1 (old data)&lt;BR /&gt;&lt;/SPAN&gt;            field_to_compare_2 = &lt;SPAN&gt;'SocketID'  &lt;/SPAN&gt;&lt;SPAN&gt;# Field name in feature_class2 (new data)&lt;BR /&gt;&lt;/SPAN&gt;            time_stamp = datetime.datetime.now().strftime(&lt;SPAN&gt;"%Y%m%d_%H%M%S"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# Create a list to store the differences&lt;BR /&gt;&lt;/SPAN&gt;            differences = []&lt;BR /&gt;            unique_values = &lt;SPAN&gt;set&lt;/SPAN&gt;()&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# Create a search cursor for the first feature class&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"finding new AMI exports"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;# Create a search cursor for feature_class1 to populate unique_values set&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class1&lt;SPAN&gt;, &lt;/SPAN&gt;[field_to_compare_1]) &lt;SPAN&gt;as &lt;/SPAN&gt;cursor1:&lt;BR /&gt;                &lt;SPAN&gt;for &lt;/SPAN&gt;row1 &lt;SPAN&gt;in &lt;/SPAN&gt;cursor1:&lt;BR /&gt;                    value = row1[&lt;SPAN&gt;0&lt;/SPAN&gt;]&lt;BR /&gt;                    unique_values.add(value)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# Create a search cursor for feature_class2 to compare with unique_values&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class2&lt;SPAN&gt;, &lt;/SPAN&gt;[&lt;SPAN&gt;'OID@'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;field_to_compare_2&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'SHAPE@'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'*'&lt;/SPAN&gt;]) &lt;SPAN&gt;as &lt;/SPAN&gt;cursor2:&lt;BR /&gt;                &lt;SPAN&gt;for &lt;/SPAN&gt;row2 &lt;SPAN&gt;in &lt;/SPAN&gt;cursor2:&lt;BR /&gt;                    value2 = row2[&lt;SPAN&gt;1&lt;/SPAN&gt;]&lt;BR /&gt;                    &lt;SPAN&gt;if &lt;/SPAN&gt;value2 &lt;SPAN&gt;not in &lt;/SPAN&gt;unique_values:&lt;BR /&gt;                        differences.append(row2)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# Print the differences&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;differences&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;            getcount = &lt;SPAN&gt;len&lt;/SPAN&gt;(differences)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"Differences found: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;getcount&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# Export to new fc&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;            # Create a query string for the selection&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;if &lt;/SPAN&gt;differences:&lt;BR /&gt;                &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Exporting..."&lt;/SPAN&gt;)&lt;BR /&gt;                oid_list = [&lt;SPAN&gt;str&lt;/SPAN&gt;(difference[&lt;SPAN&gt;0&lt;/SPAN&gt;]) &lt;SPAN&gt;for &lt;/SPAN&gt;difference &lt;SPAN&gt;in &lt;/SPAN&gt;differences]&lt;BR /&gt;                oid_list_string = &lt;SPAN&gt;', '&lt;/SPAN&gt;.join(oid_list)&lt;BR /&gt;                query_string = &lt;SPAN&gt;f"OBJECTID IN (&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;oid_list_string&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;)"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;                arcpy.analysis.Select(&lt;SPAN&gt;in_features&lt;/SPAN&gt;=feature_class2&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_feature_class&lt;/SPAN&gt;=new_waterMeters&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                      &lt;SPAN&gt;where_clause&lt;/SPAN&gt;=query_string)&lt;BR /&gt;&lt;BR /&gt;                &lt;SPAN&gt;# Find the field map for each field and update its output field name&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;try&lt;/SPAN&gt;:&lt;BR /&gt;                    &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Appending new meters to sde layer"&lt;/SPAN&gt;)&lt;BR /&gt;                    &lt;SPAN&gt;# Use the arcpy Append tool to append the data from the input table to the target table&lt;BR /&gt;&lt;/SPAN&gt;                    arcpy.management.Append(&lt;SPAN&gt;inputs&lt;/SPAN&gt;=new_waterMeters&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;target&lt;/SPAN&gt;=waterMeter_points_location&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;schema_type&lt;/SPAN&gt;=&lt;SPAN&gt;"NO_TEST"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                            &lt;SPAN&gt;field_mapping&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;subtype&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                            &lt;SPAN&gt;match_fields&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;update_geometry&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;                    &lt;BR /&gt;                &lt;SPAN&gt;except &lt;/SPAN&gt;arcpy.ExecuteError &lt;SPAN&gt;or &lt;/SPAN&gt;&lt;SPAN&gt;AttributeError&lt;/SPAN&gt;:&lt;BR /&gt;                    &lt;SPAN&gt;print&lt;/SPAN&gt;(arcpy.GetMessages())&lt;BR /&gt;                    now2 = datetime.datetime.now()&lt;BR /&gt;                    &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"End time: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;now2&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;                &lt;SPAN&gt;# calc field for use type&lt;BR /&gt;&lt;/SPAN&gt;                &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Calculating use type[COMMERCIAL,IRRIGATION (COMMERCIAL),IRRIGATION (RESIDENTIAL),RESIDENTIAL"&lt;/SPAN&gt;)&lt;BR /&gt;                code_block = &lt;SPAN&gt;"""&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;def calculate_rate_category(rate_code):&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    myList1 = ["BT/I/C/WA", "BT/I/E/SW", "BT/I/E/WA", "BT/I/F/WA", "BT/I/G/SW", "BT/I/G/WA", "BT/I/H/WA", "BT/I/I/WA", "BT/I/LP/WA", "BT/I/M/WA", "BT/O/C/WA", "BT/O/J/WA", "BT/O/OB/WA", "BT/O/RL/WA", "CT/I/C/WA"]&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    myList2 = ["BT/I/C/IR", "BT/I/I/IR", "BT/I/LP/IR", "BT/I/M/IR", "BT/I/W/IR", "BT/O/C/IR", "CT/I/C/IR"]&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    myList3 = ["BT/I/R/IR", "BT/O/R/IR"]&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    myList4 = ["BT/I/R/WA", "BT/O/R/WA"]&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    if rate_code in myList1:&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        return "COMMERCIAL"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    elif rate_code in myList2:&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        return "IRRIGATION (COMMERCIAL)"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    elif rate_code in myList3:&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        return "IRRIGATION (RESIDENTIAL)"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    elif rate_code in myList4:&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        return "RESIDENTIAL"&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;    else:&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        return None&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;        """&lt;BR /&gt;&lt;/SPAN&gt;                arcpy.management.CalculateField(&lt;SPAN&gt;in_table&lt;/SPAN&gt;=waterMeter_points_location&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field&lt;/SPAN&gt;=&lt;SPAN&gt;'Grouping'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;expression&lt;/SPAN&gt;=&lt;SPAN&gt;"calculate_rate_category(!RateCode!)"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                                &lt;SPAN&gt;expression_type&lt;/SPAN&gt;=&lt;SPAN&gt;"PYTHON3"&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;code_block&lt;/SPAN&gt;=code_block&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_type&lt;/SPAN&gt;=&lt;SPAN&gt;'TEXT'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;enforce_domains&lt;/SPAN&gt;=&lt;SPAN&gt;""&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;else&lt;/SPAN&gt;:&lt;BR /&gt;                &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"No new meter values to add"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# export the new table&lt;BR /&gt;&lt;/SPAN&gt;            arcpy.conversion.ExportTable(&lt;SPAN&gt;in_table&lt;/SPAN&gt;=waterMeter_points_location&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;out_table&lt;/SPAN&gt;=out_table&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;where_clause&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;use_field_alias_as_name&lt;/SPAN&gt;=&lt;SPAN&gt;"USE_ALIAS"&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;field_mapping&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;BR /&gt;&lt;/SPAN&gt;                                         &lt;SPAN&gt;sort_field&lt;/SPAN&gt;=&lt;SPAN&gt;''&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;#&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Clean up workspace"&lt;/SPAN&gt;)&lt;BR /&gt;            arcpy.Delete_management([out_layer&lt;SPAN&gt;, &lt;/SPAN&gt;water_meter_refined&lt;SPAN&gt;, &lt;/SPAN&gt;water_meter_points])&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# reconcile and post version&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;except &lt;/SPAN&gt;arcpy.ExecuteError:&lt;BR /&gt;        &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Failure"&lt;/SPAN&gt;)&lt;BR /&gt;        arcpy.AddMessage(arcpy.GetMessages())&lt;BR /&gt;        now2 = datetime.datetime.now()&lt;BR /&gt;        &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"End time: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;now2&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;    &lt;SPAN&gt;# end script&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"Complete"&lt;/SPAN&gt;)&lt;BR /&gt;    now2 = datetime.datetime.now()&lt;BR /&gt;    &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"End time: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;now2&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;if &lt;/SPAN&gt;__name__ == &lt;SPAN&gt;'__main__'&lt;/SPAN&gt;:&lt;BR /&gt;    wm_update()&lt;/PRE&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 11 Sep 2024 20:04:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537525#M72812</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-11T20:04:36Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537526#M72813</link>
      <description>&lt;P&gt;I believe this is the area the code is failing in&lt;/P&gt;&lt;PRE&gt;            &lt;SPAN&gt;# find differences in socketID to find new meters&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;            # Specify the field to compare&lt;BR /&gt;&lt;/SPAN&gt;            feature_class2 = water_meter_refined&lt;BR /&gt;            feature_class1 = waterMeter_points_location&lt;BR /&gt;            field_to_compare_1 = &lt;SPAN&gt;'SocketID'  &lt;/SPAN&gt;&lt;SPAN&gt;# Field name in feature_class1 (old data)&lt;BR /&gt;&lt;/SPAN&gt;            field_to_compare_2 = &lt;SPAN&gt;'SocketID'  &lt;/SPAN&gt;&lt;SPAN&gt;# Field name in feature_class2 (new data)&lt;BR /&gt;&lt;/SPAN&gt;            time_stamp = datetime.datetime.now().strftime(&lt;SPAN&gt;"%Y%m%d_%H%M%S"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# Create a list to store the differences&lt;BR /&gt;&lt;/SPAN&gt;            differences = []&lt;BR /&gt;            unique_values = &lt;SPAN&gt;set&lt;/SPAN&gt;()&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# Create a search cursor for the first feature class&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"finding new AMI exports"&lt;/SPAN&gt;)&lt;BR /&gt;            &lt;SPAN&gt;# Create a search cursor for feature_class1 to populate unique_values set&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class1&lt;SPAN&gt;, &lt;/SPAN&gt;[field_to_compare_1]) &lt;SPAN&gt;as &lt;/SPAN&gt;cursor1:&lt;BR /&gt;                &lt;SPAN&gt;for &lt;/SPAN&gt;row1 &lt;SPAN&gt;in &lt;/SPAN&gt;cursor1:&lt;BR /&gt;                    value = row1[&lt;SPAN&gt;0&lt;/SPAN&gt;]&lt;BR /&gt;                    unique_values.add(value)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# Create a search cursor for feature_class2 to compare with unique_values&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class2&lt;SPAN&gt;, &lt;/SPAN&gt;[&lt;SPAN&gt;'OID@'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;field_to_compare_2&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'SHAPE@'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'*'&lt;/SPAN&gt;]) &lt;SPAN&gt;as &lt;/SPAN&gt;cursor2:&lt;BR /&gt;                &lt;SPAN&gt;for &lt;/SPAN&gt;row2 &lt;SPAN&gt;in &lt;/SPAN&gt;cursor2:&lt;BR /&gt;                    value2 = row2[&lt;SPAN&gt;1&lt;/SPAN&gt;]&lt;BR /&gt;                    &lt;SPAN&gt;if &lt;/SPAN&gt;value2 &lt;SPAN&gt;not in &lt;/SPAN&gt;unique_values:&lt;BR /&gt;                        differences.append(row2)&lt;BR /&gt;&lt;BR /&gt;            &lt;SPAN&gt;# Print the differences&lt;BR /&gt;&lt;/SPAN&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"&lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;differences&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;            getcount = &lt;SPAN&gt;len&lt;/SPAN&gt;(differences)&lt;BR /&gt;            &lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;f"Differences found: &lt;/SPAN&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;getcount&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 11 Sep 2024 20:05:35 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537526#M72813</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-11T20:05:35Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537551#M72814</link>
      <description>&lt;P&gt;Does&amp;nbsp;feature_class2 have null values, locked records, or invalid geometries, this can cause a cursor failure.&lt;/P&gt;&lt;P&gt;see what prints on&lt;/P&gt;&lt;LI-CODE lang="c"&gt;with arcpy.da.SearchCursor(feature_class2, [field_to_compare_2]) as Cursor2:
    for row2 in Cursor2:
        print(row2)  # Check the output&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Sep 2024 21:39:50 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537551#M72814</guid>
      <dc:creator>TonyAlmeida</dc:creator>
      <dc:date>2024-09-11T21:39:50Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537562#M72815</link>
      <description>&lt;P&gt;I can't say it is the cause of your issue, but don't mix the field name wild card while also explicitly naming fields because it results in duplicate columns in the cursor.&lt;/P&gt;</description>
      <pubDate>Wed, 11 Sep 2024 22:20:48 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537562#M72815</guid>
      <dc:creator>JoshuaBixby</dc:creator>
      <dc:date>2024-09-11T22:20:48Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537832#M72819</link>
      <description>&lt;P&gt;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/3265"&gt;@TonyAlmeida&lt;/a&gt;&amp;nbsp;I will have to investigate more. I am not even sure where these feature classes are located or how to view them at the moment.&lt;BR /&gt;&lt;BR /&gt;Where would you suggest I insert the block of code you provided?&lt;BR /&gt;&lt;BR /&gt;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/1371"&gt;@JoshuaBixby&lt;/a&gt;&amp;nbsp;Thank you for the response. I have to be honest. I have no idea what that means. Can you possibly highlight what you mean and I can look into it further?&lt;/P&gt;&lt;P&gt;Oddly enough, I had a colleague from the city's GIS Department run it on his machine last night and the script ran fine. I am wondering if I do not have file permissions maybe to a certain folder this script is hitting on?&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;A little background to my situation. I am the second GIS Analyst for a local water department. I am the only GIS person in the department and my supervisors have no idea what my predecessor did. They got really lucky with him. He has set up some amazing stuff, but it is way over my head. The city I work for has a GIS department that has been very helpful to me, but we are not in the same departments.&lt;/P&gt;</description>
      <pubDate>Thu, 12 Sep 2024 15:49:07 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1537832#M72819</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-12T15:49:07Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1540469#M72903</link>
      <description>&lt;P&gt;I have all the file permissions I need. I am on a more updated version of Pro than my college. I am using a 3.11 "interpreter" and he is using 3.9.&lt;/P&gt;&lt;P&gt;Is there a way to install an older version of this "package" or "interpreter". All I know is when I choose an interpreter in PyCharm I navigate to C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\python.exe&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;I am desperate. I have no clue what version of Pro my predecessor had when he created this script, but I know what my colleague is using works.&lt;/P&gt;</description>
      <pubDate>Thu, 19 Sep 2024 16:28:08 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1540469#M72903</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-19T16:28:08Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1540517#M72904</link>
      <description>&lt;P&gt;Re&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/3265"&gt;@TonyAlmeida&lt;/a&gt;'s suggestion:&amp;nbsp;&lt;/P&gt;&lt;P&gt;To keep it simple for yourself, just insert his code onto line 275 on the original block you posted (immediately before where you make cursor2.&lt;/P&gt;&lt;LI-CODE lang="python"&gt;            # Create a search cursor for the first feature class
            print("finding new AMI exports")
            # Create a search cursor for feature_class1 to populate unique_values set
            with arcpy.da.SearchCursor(feature_class1, [field_to_compare_1]) as cursor1:
                for row1 in cursor1:
                    value = row1[0]
                    unique_values.add(value)

            with arcpy.da.SearchCursor(feature_class2, [field_to_compare_2]) as Cursor2:
            for row2 in Cursor2:
                print(row2)  # Check the output
            #Add this break in here to stop the loop.
            # Right now it's looping through a list of csvs so we're just
            # breaking the loop before it goes farther than this cursor.
            # If there isn't any error, then it'll pop you what is currently
            # line 362.
            break


            # Create a search cursor for feature_class2 to compare with unique_values
            with arcpy.da.SearchCursor(feature_class2, ['OID@', field_to_compare_2, 'SHAPE@', '*']) as cursor2:
                for row2 in cursor2:
                    value2 = row2[1]
                    if value2 not in unique_values:
                        differences.append(row2)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Re &lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/1371"&gt;@JoshuaBixby&lt;/a&gt;'s suggestion mixing the wildcard and the fieldnames:&lt;/P&gt;&lt;LI-CODE lang="python"&gt; # Create a search cursor for feature_class2 to compare with unique_values
            with arcpy.da.SearchCursor(feature_class2, 
                                       ['OID@', field_to_compare_2, 
                                        'SHAPE@', '*']) as cursor2:
                for row2 in cursor2:
                    value2 = row2[1]
                    if value2 not in unique_values:
                        differences.append(row2)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Let's assume your feature class has 6 fields: OID, Field1, Field2, Field3, ShapeLeng, ShapeArea.&lt;/P&gt;&lt;P&gt;In this scenario, we're assigning Field2 to&amp;nbsp;&lt;STRONG&gt;field_to_compare_2,&amp;nbsp;&lt;/STRONG&gt; and then for our cursor, telling the computer to give us X fields from the table, then going through the table row by row to get the information we want.&lt;/P&gt;&lt;P&gt;Ok, cool. Here's the wrinkle.&lt;/P&gt;&lt;P&gt;Sometimes, you don't want to call out specific fields and it doesn't super matter for what you're doing. So what you do instead is throw in a wildcard (&lt;STRONG&gt;'*'&lt;/STRONG&gt;) into your field list. Great, now I can just get the entire row with every field in the table.&lt;/P&gt;&lt;P&gt;What you're doing right now is asking the computer return the fields you named, PLUS all the other fields.&lt;/P&gt;&lt;P data-unlink="true"&gt;So it's returning the following list: [&lt;STRONG&gt;OID@, Field2, SHAPE@,&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt;OID&lt;/STRONG&gt;, Field1, &lt;STRONG&gt;Field2&lt;/STRONG&gt;, Field3, ShapeLeng, ShapeArea]&lt;/P&gt;&lt;P&gt;*Sidenote: the&amp;nbsp;OID@ returns the unique ID column for the table, which is typically one of the following: ObjectID, OID, FID. In my example,&amp;nbsp;OID@ is returning the field named 'OID'.&lt;/P&gt;&lt;P&gt;What Josh is suggesting is that this may be causing some of your problems, e.g. returning your Unique ID field and Field2 twice each.&lt;/P&gt;&lt;P&gt;Testing on my own data, it didn't throw any errors for me, but it's a good practice to clean it up anyway.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hopefully this kind of helps?&lt;/P&gt;&lt;P&gt;Also, I know you say you have permissions, but&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;A href="https://gis.stackexchange.com/questions/297299/runtimeerror-general-function-failure-when-running-arcpy-da-searchcursor" target="_blank"&gt;cursor - RuntimeError: General function failure when running arcpy.da.SearchCursor - Geographic Information Systems Stack Exchange&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 19 Sep 2024 17:51:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1540517#M72904</guid>
      <dc:creator>AlfredBaldenweck</dc:creator>
      <dc:date>2024-09-19T17:51:58Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541305#M72909</link>
      <description>&lt;P&gt;I am going to attempt to rerun this, I have made the suggested changes, but want to verify I am inserting the code into the correct location. I have a long header in my script so our line numbers are not the same.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;# Create a search cursor for the first feature class&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;print&lt;/SPAN&gt;(&lt;SPAN&gt;"finding new AMI exports"&lt;/SPAN&gt;)&lt;BR /&gt;&lt;SPAN&gt;# Create a search cursor for feature_class1 to populate unique_values set&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class1&lt;SPAN&gt;, &lt;/SPAN&gt;[field_to_compare_1]) &lt;SPAN&gt;as &lt;/SPAN&gt;cursor1:&lt;BR /&gt;    &lt;SPAN&gt;for &lt;/SPAN&gt;row1 &lt;SPAN&gt;in &lt;/SPAN&gt;cursor1:&lt;BR /&gt;        value = row1[&lt;SPAN&gt;0&lt;/SPAN&gt;]&lt;BR /&gt;        unique_values.add(value)&lt;BR /&gt;        &lt;BR /&gt;&lt;SPAN&gt;#ESRI COMMUNITY SUGGESTION--------------------------------------------------------------&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class2&lt;SPAN&gt;, &lt;/SPAN&gt;[field_to_compare_2]) &lt;SPAN&gt;as &lt;/SPAN&gt;Cursor2:&lt;BR /&gt;    &lt;SPAN&gt;for &lt;/SPAN&gt;row2 &lt;SPAN&gt;in &lt;/SPAN&gt;Cursor2:&lt;BR /&gt;        &lt;SPAN&gt;print&lt;/SPAN&gt;(row2)  &lt;SPAN&gt;# Check the output&lt;BR /&gt;&lt;/SPAN&gt;    &lt;SPAN&gt;break&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;#---------------------------------------------------------------------------------------    &lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;# Create a search cursor for feature_class2 to compare with unique_values&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;with &lt;/SPAN&gt;arcpy.da.SearchCursor(feature_class2&lt;SPAN&gt;, &lt;/SPAN&gt;[&lt;SPAN&gt;'OID@'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;field_to_compare_2&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'SHAPE@'&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;'*'&lt;/SPAN&gt;]) &lt;SPAN&gt;as &lt;/SPAN&gt;cursor2:&lt;BR /&gt;    &lt;SPAN&gt;for &lt;/SPAN&gt;row2 &lt;SPAN&gt;in &lt;/SPAN&gt;cursor2:&lt;BR /&gt;        value2 = row2[&lt;SPAN&gt;1&lt;/SPAN&gt;]&lt;BR /&gt;        &lt;SPAN&gt;if &lt;/SPAN&gt;value2 &lt;SPAN&gt;not in &lt;/SPAN&gt;unique_values:&lt;BR /&gt;            differences.append(row2)&lt;/PRE&gt;&lt;P&gt;Also, for the wildcard suggestion, is it suggested that the '*' be removed?&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 23 Sep 2024 13:12:37 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541305#M72909</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-23T13:12:37Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541308#M72910</link>
      <description>&lt;P&gt;Mostly right.&lt;/P&gt;&lt;P&gt;Unindent the&amp;nbsp;&lt;STRONG&gt;break&lt;/STRONG&gt; once so that it lines up with the "with arcpy.da.SearchCursor", or else it's going to stop after the first row in the cursor. For this testing, we want to see all the rows in the cursor, and break the loop of CSVs afterwards.&lt;/P&gt;&lt;P&gt;And yeah, get rid of the '*' once you see what errors, if any, there are when you run the community-suggested code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Also, to&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/3265"&gt;@TonyAlmeida&lt;/a&gt;&amp;nbsp;'s point, have you tried using a &lt;A href="https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/repair-geometry.htm" target="_blank" rel="noopener"&gt;Repair Geometry&lt;/A&gt;&amp;nbsp;on your tables before running the cursors?&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2024 13:19:56 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541308#M72910</guid>
      <dc:creator>AlfredBaldenweck</dc:creator>
      <dc:date>2024-09-23T13:19:56Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541312#M72911</link>
      <description>&lt;P&gt;Thank you. I have not utilized the repair geometry tool. The table is an export we are given from Muller on a daily basis. I will have to read the documentation you provided and see what's up.&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2024 13:31:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541312#M72911</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-23T13:31:32Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541314#M72912</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdamTerrell_0-1727098405098.png" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/115636i9ABC4B1793F12FE6/image-size/medium?v=v2&amp;amp;px=400" role="button" title="AdamTerrell_0-1727098405098.png" alt="AdamTerrell_0-1727098405098.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;I do know there is some null geometry that is ignored in the beginning of the script, when it is creating table to points.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2024 13:34:22 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541314#M72912</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-23T13:34:22Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541421#M72914</link>
      <description>&lt;P&gt;Latest run with the added code. Not sure what the new code is doing. Nothing prints.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="AdamTerrell_0-1727103536848.png" style="width: 400px;"&gt;&lt;img src="https://community.esri.com/t5/image/serverpage/image-id/115660iA97FEA0615E5C6A1/image-size/medium?v=v2&amp;amp;px=400" role="button" title="AdamTerrell_0-1727103536848.png" alt="AdamTerrell_0-1727103536848.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2024 14:59:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541421#M72914</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-23T14:59:02Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541466#M72915</link>
      <description>&lt;P&gt;Basically it's failing in the cursor.&lt;/P&gt;&lt;P&gt;Just for funsies, replace the "field_to_compare2" in what we added with another field like "OBJECTID" (assuming you have OBJECTID in that table).&lt;/P&gt;&lt;P&gt;Then, after that fails (probably will), try adding Repair Geometry on featureclass2 immediately before the cursor and see if that fixes anything.&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2024 15:36:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541466#M72915</guid>
      <dc:creator>AlfredBaldenweck</dc:creator>
      <dc:date>2024-09-23T15:36:02Z</dc:date>
    </item>
    <item>
      <title>Re: General Function Failure With Cursor in Python Script</title>
      <link>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541471#M72916</link>
      <description>&lt;P&gt;I did look at the repair geometry documentation you provided. These are just point features and some null values are ignored when converting the table to points. I do not belive ObjectID is in the csv, but it is probably in one of the joined tables, which I thought is what the cursor is looking through.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2024 15:43:20 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/general-function-failure-with-cursor-in-python/m-p/1541471#M72916</guid>
      <dc:creator>AdamTerrell</dc:creator>
      <dc:date>2024-09-23T15:43:20Z</dc:date>
    </item>
  </channel>
</rss>

