declaração python 'with', devo usar contextlib.closing?

from contextlib import closing

def init_db():
    with closing(connect_db()) as db:
        with app.open_resource('schema.sql') as f:
            db.cursor().executescript(f.read())
        db.commit()

Isso é do tutorial do balão, Etapa 3 (http://flask.pocoo.org/docs/tutorial/dbinit/#tutorial-dbinit) E estou um pouco curioso sobre a linha 4 disso.

Devo importar e usar esse método 'contextlib.closing ()'?

Quando eu aprendi sobrecom declaração, muitos artigos disseram que fecha o arquivo automaticamente após o processo como abaixo. (o mesmo que Finalmente: thing.close ())

with open('filename','w') as f:
    f.write(someString);

Mesmo que eu não use esse contextlib.closing () como abaixo, qual é a diferença? É da versão 2.7.6, obrigado.

def init_db():
    with connect_db() as db:
        with app.open_resource('schema.sql') as f:
            db.cursor().executescript(f.read())
        db.commit()

questionAnswers(2)

yourAnswerToTheQuestion