Django management command for commandline querying
Project description
Copyright (c) 2009-2014 Dennis Kaarsemaker <dennis@kaarsemaker.net> A command-line interface to query the Django ORM
- Install:
python setup.py install
Add cli_query to the INSTALLED_APPLICATIONS setting in your settings.py
Usage: cd your_project_dir; ./manage.py query [options] [filters]
The django ORM will be queried with the filters on the commandline. Records will be separated with newlines, fields with the specified separator (the default is a comma). Alternatively, a template can be specified which will be passed the result of the query as the ‘objects’ variable
Query key/value pairs can be prefixed with a ‘!’ or ‘~’ to negate the query. The __in filter works, use a comma separated string of arguments
You can also update fields using -u field=value. For every changed object, you will be prompted to approve the changes.
- Examples:
Display name and assettag of all mc01 servers %prog query -a servers -m Server name__startswith=mc01 -f name,assettag
Get a list of name, ip, mac for all servers where the does not contain .82. %prog query -a servers -m Interface !ip_address__contains=’.82.’ -f server.name,ip_address,mac_address
Use a template to get the roles, depending on mac address %prog query -a servers -m Server interface__mac_address=00:17:A4:8D:E6:BC -t ‘{{ objects.0.role_set.all|join:”,” }}’
List all eth0/eth1 network interfaces %prog query -a servers -m Interface name__in=eth0,eth1 -f ip_address,mac_address
Update the state of all mc2* servers $prog query -a servers -m Server name__startswith=mc2 -u status=live
Operators you can filter with are listed on https://docs.djangoproject.com/en/dev/ref/models/querysets/#field-lookups
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.