# Usergrid Tools (in Python)

## Prerequisites

* Install the Usergrid Python SDK: `pip install usergrid`
* Install Usergrid Tools: `pip install usergrid-tools`


## Overview
The purpose of this module is to provide tools for working with Usergrid.  The tools included as console scripts are:
* `usergrid_data_migrator` - [README](https://github.com/jwest-apigee/usergrid-util-python/blob/master/usergrid_tools/migration/README.md) A tool for migrating data from one Usergrid installation to another (or org1->org2)
* `parse_importer` - [README](https://github.com/jwest-apigee/usergrid-util-python/blob/master/usergrid_tools/parse_importer/README.md) A tool for importing data from a Parse.com data export into Usergrid
* `index_test` -  [README](https://github.com/jwest-apigee/usergrid-util-python/blob/master/usergrid_tools/indexing/README.md) A tool for testing indexing latency in Usergrid

For information on those tools, please see the respective README files
