Returns connection to database. Tries to return existing connection, unless flag_force_new

        Args:
            flag_force_new:
            filename:

        Returns: sqlite3.Connection object

        **Note** this is a private method because you can get a connection to any file, so it has to
                 be used in the right moment

def __get_conn(self, flag_force_new=False, filename=None):
        """Returns connection to database. Tries to return existing connection, unless flag_force_new

        Args:
            flag_force_new:
            filename:

        Returns: sqlite3.Connection object

        **Note** this is a private method because you can get a connection to any file, so it has to
                 be used in the right moment
        """
        flag_open_new = flag_force_new or not self._conn_is_open()

        if flag_open_new:
            if filename is None:
                filename = self.filename
            # funny that __get_conn() calls _get_conn() but that's it
            conn = self._get_conn(filename)
            self._conn = conn
        else:
            conn = self._conn
        return conn