Using a generator function is a pattern I find useful so I thought I would mention it.
Handling StopIteration lets you automate returning something you design, like below I return a dictionary if the cursor is empty or not.
# Define row generator
def rowGenerator(table,fields,sortField=None):
if sortField is not None:
sql = [None,'ORDER BY ' + sortField]
cursor = arcpy.da.SearchCursor(table,fields,sql_clause=sql)
else:
cursor = arcpy.da.SearchCursor(table,fields)
with cursor:
for row in cursor:
yield row
# Create row generator
if postalField:
rowGen = rowGenerator(inTable,cursorFields,postalField)
else:
rowGen = rowGenerator(inTable,cursorFields)
# Define recordset builder
def recordsetBuilder(rowgen):
records = []
for i in range(0,1000):
try:
data = next(rowgen)
attributes = {'attributes':{recordFields:data
for i in range(len(data))}}
records.append(attributes)
except StopIteration:
break
return {'records':records}