Как правильно закрыть соединение, созданное в initializerr? - PullRequest
0 голосов
/ 29 июня 2019

Мой вопрос о том, как закрыть объект 'conn' после запросов.Запрос может быть много.

class MusicAPI(object):

    def __init__(self):
        logger.info("Loading music database ...")
        self.conn = sqlite3.connect('data/music.db')

    def search_by_artist(self, artist, song=None, genre=None):
        assert (artist is not None), "artist must be provided in search_by_artist!"

        query = "SELECT * from musicians where artist == '" + artist + "'"
        if song is not None:
            query += " and song == '" + song + "'"
        if genre is not None:
            query += " and genre == '" + genre + "'"

        results = set()
        cursor = self.conn.execute(query)
        for row in cursor:
            results.add(row[0])

        return results

Тогда я могу использовать API для выполнения запроса:

class SearchMusic(object):
   def name(self):
      return "search_music"

   def query(self, query_term):
       music_api = MusicAPI()
       r = music_api.search_by_artist(query_term)

Как правильно закрыть «conn», который создается в init функция?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...