лучший способ запустить код очистки генератора 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