title: Connection Management Working with Database in Python
body: <p>I have a class that working with db operations like below : </p>
  
  <pre><code>class DepartmentOperations(DatabaseOperations):
  
  def __init__(self):
      try:
          self._connection = Database.create_connection()
          self._cursor = self._connection.cursor()
          self.isactive = True
      except ConnectionException as ex:
          print(ex.args)
  
  def get_id(self, department_name):
      if(self.isactive):
          try:
              self._cursor.execute("select BolumId from BOLUMLER where BolumAdi = %s" , department_name)
              row = self._cursor.fetchone()
              if row is not None:
                  return row[0]
              else:
                  return 0
          except:
              raise DbException("Kayıt Getirirken Hata OLuştu...")
          finally:
              self._connection.close()
              self._cursor.close()
              self.isactive = False
      else:
          try:
              self._connection = Database.create_connection()
              self._cursor = self._connection.cursor()
              self.isactive = True
          except ConnectionException as ex:
              print(ex.args)
          try:
              self._cursor.execute("select BolumId from BOLUMLER where BolumAdi = %s" , department_name)
              row = self._cursor.fetchone()
              if row is not None:
                  return row[0]
              else:
                  return 0
          except:
              raise DbException("Kayıt Getirirken Hata OLuştu...")
          finally:
              self._connection.close()
              self._cursor.close()
              self.isactive = False
  
  
  
  def add(self, department_name):
      if(self.isactive):
          try:
              self._cursor.execute("insert into BOLUMLER values (%s)",(department_name))
              self._connection.commit()
          except:
              raise DbException("Veri kayıt ederken hata oluştu.")
          finally:
              self._connection.close()
              self._cursor.close()
              self.isactive = False
      else:
          try:
              self._connection = Database.create_connection()
              self._cursor = self._connection.cursor()
              self.isactive = True
          except ConnectionException as ex:
              print(ex.args)
          try:
              self._cursor.execute("insert into BOLUMLER values (%s)",(department_name))
              self._connection.commit()
          except:
              raise DbException("Veri kayıt ederken hata oluştu.")
          finally:
              self._connection.close()
              self._cursor.close()
              self.isactive = False
  </code></pre>
  
  <p>When i instantiate this class and use  it,  works for the first but not second time because as u see in the code in finally block i close the connection . I delete finally block the methods work good but when i close the connection . How can i manage connections ? </p>