Well...this is a surprise. I wrote SQL Explorer :)
Glad folks are finding it useful!
Happy to answer any questions or take feedback/feature requests (I'm cc@grove.co)! We use the heck out of this thing internally.
A couple fun notes:
1. Every SQL statement is logged as a QueryLog object. This really simple data model enables a ton of the functionality:
- unique, bookmarkable URLs for every single query (including ad-hoc queries)
- historic runtime/query duration reporting
- query versioning
- 'popularity' in the form of run-count
2. The 'snapshot' feature is incredibly powerful. Tick a box on a saved query and (assuming you have Celery), Explorer will the run query on a cron and save the results to s3. Super useful for mutable data. Like, if you have a product catalog and the prices sometimes change, but not very often, it's great to have a query of 'current prices' that snapshots once per day.
3. Queries are all exposed as CSV and JSON endpoints (with token auth). A great way to shuffle data between applications.
4. The only 'django-specific' part of this is that it introspects the Django app metadata to build the 'schema viewer' on the right hand side. If not for this one feature, this would just be a totally general-purpose query tool that happened to be built on Django. One day...
Glad folks are finding it useful!
Happy to answer any questions or take feedback/feature requests (I'm cc@grove.co)! We use the heck out of this thing internally.
A couple fun notes:
1. Every SQL statement is logged as a QueryLog object. This really simple data model enables a ton of the functionality:
- unique, bookmarkable URLs for every single query (including ad-hoc queries)
- historic runtime/query duration reporting
- query versioning
- 'popularity' in the form of run-count
2. The 'snapshot' feature is incredibly powerful. Tick a box on a saved query and (assuming you have Celery), Explorer will the run query on a cron and save the results to s3. Super useful for mutable data. Like, if you have a product catalog and the prices sometimes change, but not very often, it's great to have a query of 'current prices' that snapshots once per day.
3. Queries are all exposed as CSV and JSON endpoints (with token auth). A great way to shuffle data between applications.
4. The only 'django-specific' part of this is that it introspects the Django app metadata to build the 'schema viewer' on the right hand side. If not for this one feature, this would just be a totally general-purpose query tool that happened to be built on Django. One day...