лучший способ запустить код очистки генератора Python

Я пытаюсь написать функцию генератора, которая получает строки из базы данных и возвращает их по одной за раз. Однако я'Я не уверен, что код очистки, помеченный ** ниже, выполняется так, как я думаю. Если это не так, каков наилучший способ поместить код очистки в сам генератор, который выполняется после последнего оператора yield? Я посмотрел на перехват StopIteration, но это, кажется, сделано из вызывающей стороны, а не внутри генератора.

def MYSQLSelectGenerator(stmt):
...
try:   
    myDB = MySQLdb.connect(host=..., port=..., user=..., passwd=..., db=...)   
    dbc=myDB.cursor()
    dbc.execute(stmt)
    d = "asdf"
    while d is not None:
        d = dbc.fetchone() #can also use fetchmany() to be more efficient
        yield d
    dbc.close() #** DOES THIS WORK AS I INTEND, MEANING AS SOON AS d = "None"
except MySQLdb.Error, msg:
    print("MYSQL ERROR!")
    print msg

Ответы на вопрос(3)

Ваш ответ на вопрос