<?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: Search Cursor (where clause), Insert Cursor - based on unique values in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/search-cursor-where-clause-insert-cursor-based-on/m-p/320295#M24887</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can actually go one step further and use the &lt;SPAN style="font-family: 'courier new', courier;"&gt;DISTINCT&lt;/SPAN&gt; SQL prefix so you don't have to query everything, just do do your own distinct with a set in that generator expression. See the &lt;A href="http://desktop.arcgis.com/en/arcmap/latest/analyze/arcpy-data-access/searchcursor-class.htm#C_GUID-3CB1DFF4-983D-445F-9CB2-0FF1CD4B4880" rel="nofollow noopener noreferrer" target="_blank"&gt;code sample 5b and 6&lt;/A&gt; for reference on using SQL prefix and postfix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My approach would be something like this&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
import os

def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; source_table = os.path.join(workspace, outname)
&amp;nbsp;&amp;nbsp;&amp;nbsp; gis_fields_in = ["ADDR_NUM", "FULL_ST_NAME"]
&amp;nbsp;&amp;nbsp;&amp;nbsp; distinct_names = [
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[0] for row in
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.da.SearchCursor(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source_table,&amp;nbsp; ## in_table
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Name",&amp;nbsp; ## field_names
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sql_clause=(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'DISTINCT',&amp;nbsp; ## SQL prefix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None&amp;nbsp; ## SQL postfix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp; ]

&amp;nbsp;&amp;nbsp;&amp;nbsp; for name in distinct_names:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out_table = os.path.join(workspace, "{}_Name_{}".format(outname, name))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where_clause = "Name = '{}'".format(name)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.MakeTableView_management(source_table, "tbl_view", where_clause)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CopyRows_management("tbl_view", out_table)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Delete_management("tbl_view")



if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 15:12:39 GMT</pubDate>
    <dc:creator>BlakeTerhune</dc:creator>
    <dc:date>2021-12-11T15:12:39Z</dc:date>
    <item>
      <title>Search Cursor (where clause), Insert Cursor - based on unique values</title>
      <link>https://community.esri.com/t5/python-questions/search-cursor-where-clause-insert-cursor-based-on/m-p/320294#M24886</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Seeking some guidance related to search cursor's where clause.&amp;nbsp; Currently, I am grabbing unique field values from a single column using the unique_values function on the field Name.&amp;nbsp; I am attempting to export tables by unique Name values, passing the fields I want to it along with the rows associated with that unique name.&amp;nbsp; So if there is three exported tables, there will be three unique Name values.&amp;nbsp; I can get the unique Name tables exported (with my fields), but the problem is the insert cursor is adding the last Name value (alphabetically)&amp;nbsp; and its rows into each of these tables.&amp;nbsp; So I end up with the same rows in each table, but the right names of tables.&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;#not all the code, but the relevant stuff.
def unique_values(table, field):
&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.SearchCursor(table,[field]) as scursor:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return sorted({row[0] for row in scursor})

uName = unique_values(workspace+outname, "Name")

for uNameSplit in uName:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uNameSplit.split(",")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query = "Name = '{0}'".format(uNameSplit)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for uNames in uName:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: rgba(0, 0, 0, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px;"&gt;uNames&lt;/SPAN&gt; = dbas.replace(" ","")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: rgba(0, 0, 0, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px;"&gt;uNames&lt;/SPAN&gt; = dbas.replace(",","")
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: rgba(0, 0, 0, 0); font-family: Consolas, 'Courier New', Courier, mono, serif; font-size: 12px;"&gt;uNames&lt;/SPAN&gt; = dbas.replace(".","")

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.SearchCursor(workspace+outname, fields, query) as scursor:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CreateTable_management(workspace, outname+"_Name_"+uNames)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; with arcpy.da.InsertCursor(outname+"_Name_"+uNames, fields) as icursor:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for row in scursor:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; icursor.insertRow(row)&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I thought the for loop would work to pass one query at a time,&amp;nbsp; as it does for the table filename variable, but it does not for the search and inset cursor portion. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have tried passing in a list of values, but the where clause takes a string.&amp;nbsp; May be missing something obvious.&amp;nbsp; Thanks for any help!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:12:36 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/search-cursor-where-clause-insert-cursor-based-on/m-p/320294#M24886</guid>
      <dc:creator>BrianDudek</dc:creator>
      <dc:date>2021-12-11T15:12:36Z</dc:date>
    </item>
    <item>
      <title>Re: Search Cursor (where clause), Insert Cursor - based on unique values</title>
      <link>https://community.esri.com/t5/python-questions/search-cursor-where-clause-insert-cursor-based-on/m-p/320295#M24887</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You can actually go one step further and use the &lt;SPAN style="font-family: 'courier new', courier;"&gt;DISTINCT&lt;/SPAN&gt; SQL prefix so you don't have to query everything, just do do your own distinct with a set in that generator expression. See the &lt;A href="http://desktop.arcgis.com/en/arcmap/latest/analyze/arcpy-data-access/searchcursor-class.htm#C_GUID-3CB1DFF4-983D-445F-9CB2-0FF1CD4B4880" rel="nofollow noopener noreferrer" target="_blank"&gt;code sample 5b and 6&lt;/A&gt; for reference on using SQL prefix and postfix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My approach would be something like this&lt;/P&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;import arcpy
import os

def main():
&amp;nbsp;&amp;nbsp;&amp;nbsp; source_table = os.path.join(workspace, outname)
&amp;nbsp;&amp;nbsp;&amp;nbsp; gis_fields_in = ["ADDR_NUM", "FULL_ST_NAME"]
&amp;nbsp;&amp;nbsp;&amp;nbsp; distinct_names = [
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; row[0] for row in
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.da.SearchCursor(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source_table,&amp;nbsp; ## in_table
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Name",&amp;nbsp; ## field_names
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sql_clause=(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'DISTINCT',&amp;nbsp; ## SQL prefix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; None&amp;nbsp; ## SQL postfix
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp; ]

&amp;nbsp;&amp;nbsp;&amp;nbsp; for name in distinct_names:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out_table = os.path.join(workspace, "{}_Name_{}".format(outname, name))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where_clause = "Name = '{}'".format(name)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.MakeTableView_management(source_table, "tbl_view", where_clause)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.CopyRows_management("tbl_view", out_table)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finally:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Delete_management("tbl_view")



if __name__ == '__main__':
&amp;nbsp;&amp;nbsp;&amp;nbsp; main()&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 15:12:39 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/search-cursor-where-clause-insert-cursor-based-on/m-p/320295#M24887</guid>
      <dc:creator>BlakeTerhune</dc:creator>
      <dc:date>2021-12-11T15:12:39Z</dc:date>
    </item>
  </channel>
</rss>

