I do not think, this is a typical "zope-dev" question (development *of* not *with* Zope). Rerouted to Zope@zope.org... Romain Slootmaekers writes:
we have a problem using garbage collection to clean up open database cursors. ... class CursorWrapper: ... def __del__(self): self.__cursor.close() del self.__cursor print "deleted"
So in theory, the cursor will be closed on GC. The cyclic garbage collector can not release cycles with objects that have a custom destructor (i.e. a "__del__" method).
The reference counting garbage collector can (but it cannot release cycles). Thus, if your cursor wrappers happen to be part of a cycle, they will not be released. From your code, I did not see a hint that this is the case, though... Dieter