मेरे पास निम्न पुनरावर्तन कोड है, प्रत्येक नोड पर मैं मूल नोड से संबंधित नोड प्राप्त करने के लिए sql क्वेरी कहता हूं।
यहाँ त्रुटि है:
Exception RuntimeError: 'maximum recursion depth exceeded' in <bound method DictCursor.__del__ of <MySQLdb.cursors.DictCursor object at 0x879768c>> 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 <MySQLdb.cursors.DictCursor object at 0x879776c>> ignored
विधि जिसे मैं 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();
मैं वास्तव में उपरोक्त विधि के साथ कोई समस्या नहीं है, लेकिन मैं इस सवाल का उचित अवलोकन देने के लिए वैसे भी डाल दिया।
पुनरावर्तन कोड:
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
पुनरावर्ती फ़ंक्शन को कॉल करना
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();
शब्दकोश मुद्रित करने के लिए कोड
print "---Printing-------"
for key, value in baseCategoryTree.iteritems():
print key,
for elem in value[0]:
print elem + ',';
raw_input("Press Enter to continue...")
print
यदि पुनरावृत्ति बहुत गहरी है, तो मुझे अपने पुनरावृत्ति फ़ंक्शन को कॉल करने पर त्रुटि हो रही है, लेकिन जब मैं शब्दकोश प्रिंट करता हूं तो मुझे यह त्रुटि मिलती है।