':param dict connection_info: dict of psql connection keywords
:rtype: PsycoConnection'

@locked
def borrow(self, connection_info):

    for (i, (cnx, _)) in tools.reverse_enumerate(self._connections):
        if cnx.closed:
            self._connections.pop(i)
            self._debug('Removing    closed    connection    at    index    %d:    %r', i, cnx.dsn)
            continue
        if getattr(cnx, 'leaked', False):
            delattr(cnx, 'leaked')
            self._connections.pop(i)
            self._connections.append((cnx, False))
            _logger.info('%r:    Free    leaked    connection    to    %r', self, cnx.dsn)
    for (i, (cnx, used)) in enumerate(self._connections):
        if ((not used) and (cnx._original_dsn == connection_info)):
            try:
                cnx.reset()
            except psycopg2.OperationalError:
                self._debug('Cannot    reset    connection    at    index    %d:    %r', i, cnx.dsn)
                if (not cnx.closed):
                    cnx.close()
                continue
            self._connections.pop(i)
            self._connections.append((cnx, True))
            self._debug('Borrow    existing    connection    to    %r    at    index    %d', cnx.dsn, i)
            return cnx
    if (len(self._connections) >= self._maxconn):
        for (i, (cnx, used)) in enumerate(self._connections):
            if (not used):
                self._connections.pop(i)
                if (not cnx.closed):
                    cnx.close()
                self._debug('Removing    old    connection    at    index    %d:    %r', i, cnx.dsn)
                break
        else:
            raise PoolError('The    Connection    Pool    Is    Full')
    try:
        result = psycopg2.connect(connection_factory=PsycoConnection, **connection_info)
    except psycopg2.Error:
        _logger.info('Connection    to    the    database    failed')
        raise
    result._original_dsn = connection_info
    self._connections.append((result, True))
    self._debug('Create    new    connection')
    return result
