Python: Profundidad máxima de recursión excedida

Tengo el siguiente código de recursión, en cada nodo al que llamo consulta SQL para obtener los nodos que pertenecen al nodo principal.

Aquí está el error:

Exception RuntimeError: 'maximum recursion depth exceeded' in <bound method DictCursor.__del__ of > ignored RuntimeError: maximum recursion depth exceeded while calling a Python object Exception AttributeError: "'DictCursor' object has no attribute 'connection'" in <bound method DictCursor.__del__ of > ignored 

Método que llamo para obtener resultados sql:

 def returnCategoryQuery(query, variables={}): cursor = db.cursor(cursors.DictCursor); catResults = []; try: cursor.execute(query, variables); for categoryRow in cursor.fetchall(): catResults.append(categoryRow['cl_to']); return catResults; except Exception, e: traceback.print_exc(); 

En realidad, no tengo ningún problema con el método anterior, pero lo puse de todos modos para dar una visión general adecuada de la pregunta.

Código de Recursión:

 def leaves(first, path=[]): if first: for elem in first: if elem.lower() != 'someString'.lower(): if elem not in path: queryVariable = {'title': elem} for sublist in leaves(returnCategoryQuery(categoryQuery, variables=queryVariable)): path.append(sublist) yield sublist yield elem 

Llamando a la función recursiva

 for key, value in idTitleDictionary.iteritems(): for startCategory in value[0]: print startCategory + " ==== Start Category"; categoryResults = []; try: categoryRow = ""; baseCategoryTree[startCategory] = []; #print categoryQuery % {'title': startCategory}; cursor.execute(categoryQuery, {'title': startCategory}); done = False; while not done: categoryRow = cursor.fetchone(); if not categoryRow: done = True; continue; rowValue = categoryRow['cl_to']; categoryResults.append(rowValue); except Exception, e: traceback.print_exc(); try: print "Printing depth " + str(depth); baseCategoryTree[startCategory].append(leaves(categoryResults)) except Exception, e: traceback.print_exc(); 

Código para imprimir el diccionario,

 print "---Printing-------" for key, value in baseCategoryTree.iteritems(): print key, for elem in value[0]: print elem + ','; raw_input("Press Enter to continue...") print 

Si la recursión es demasiado profunda, debería estar recibiendo el error cuando llamo a mi función de recursión, pero cuando recibo este error cuando imprimo el diccionario.

Puede boost la profundidad de stack permitida: con esto, serán posibles llamadas recursivas más profundas, como esto:

 import sys sys.setrecursionlimit(10000) # 10000 is an example, try with different values 

… Pero le aconsejo que primero intente optimizar su código, por ejemplo, utilizando la iteración en lugar de la recursión.