대) (폐쇄와 함께 MySQL을 연결하고 나는이 같은 필기구의 피곤 쪘 :DB 연결 : SQLAlchemy의 사용 __del__
with closing(engine) as connection:
do_sql_stuff(connection)
이 패턴은 내 코드의 여러 분야에 걸쳐 반복과 같다 __del__
의 가용성이 필요하지 않습니다. 왜 바로 연결 작성 및 폐쇄 포장 클래스를 구현하지 :
class MyConnectionManager(object):
def __init__(self, db_uri):
self.__db_engine = sqlalchemy.create_engine(db_uri)
self.__db_conn = self.__db_engine.connect()
def __del__(self):
self.__db_conn.close()
이 단순히 두 개의 서로 다른 스타일/환경 설정, 아니면 with closing()
를 사용하여 이동하는 더 나은 방법이라고 더 중요한 이유가를 __del__
를 사용하여 (또는 그 반대의 경우)?
자신에게 물어보십시오. 왜 그들이 '델'을 이미 가지고있을 때'와 함께 '추가 했습니까? 그런 다음 [문서] (http://docs.python.org/reference/datamodel.html#object.__del__)을보고 "참고"라는 단어가있는 거대한 회색 상자와 같은 힌트가 있는지 확인하십시오. 그 안에는 굵은 글씨로, 또는 더 나은 것은 거대한 * red * (OK, 분홍색) 상자에 "Warning"이라는 단어가 굵은 글씨로 표시되어 있습니다. – kindall
@kindall - 덕분에, 나는 문서를 읽었고 실제로 이루어지고있는 일에 대해 커뮤니티로부터 더 많은 정보를 얻고 싶었습니다. –
@kindall - 당신의 첫 번째 지점에있어서,'__del__'이 너무 망가져 있다면, 왜 그것을 제거하지 않았습니까? –