Building SQL Expression using printed results?

426
3
Jump to solution
07-28-2022 05:28 AM
Labels (1)
Davec43
Occasional Contributor

I run a searchcursor that prints results. How do I use those results to build an SQL Expression in Python?

lyr = "layer name"
events = arcpy.da.SearchCursor(lyr, ['Event'])
unique_events = list(set([row[0] for row in events]))
unique_events
print(unique_events)

I then get values

[1, 2, 3, 4, 5, 6]

How do I take those values in python and insert them in sql expression for whats in the ()? 

arcpy.management.SelectLayerByAttribute("Lyer2", "NEW_SELECTION", "Event IN ()", None)

 

0 Kudos
1 Solution

Accepted Solutions
RhettZufelt
MVP Frequent Contributor

one way:

 

sql = "Event IN(" + ','.join(map(str,unique_events)) + ")"

arcpy.management.SelectLayerByAttribute("Lyer2", "NEW_SELECTION", sql, None)

 

>>>sql

'Event IN(1,2,3,4,5,6)'

 

 R_

View solution in original post

3 Replies
RhettZufelt
MVP Frequent Contributor

one way:

 

sql = "Event IN(" + ','.join(map(str,unique_events)) + ")"

arcpy.management.SelectLayerByAttribute("Lyer2", "NEW_SELECTION", sql, None)

 

>>>sql

'Event IN(1,2,3,4,5,6)'

 

 R_

Davec43
Occasional Contributor

Awesome it worked!

0 Kudos
JoshuaBixby
MVP Esteemed Contributor

You can streamline it by not converting to list but a tuple.

lyr = "layer name"
events = arcpy.da.SearchCursor(lyr, ['Event'])
unique_events = tuple(set([row[0] for row in events]))
arcpy.management.SelectLayerByAttribute("Lyer2", "NEW_SELECTION", f"Event IN {unique_events}", None)