{ "info": { "author": "Mario Orlandi", "author_email": "morlandi@brainstorm.it", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Django", "Framework :: Django :: 1.10", "Framework :: Django :: 1.8", "Framework :: Django :: 1.9", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "=============================\ndjango-query-tracer\n=============================\n\n.. image:: https://badge.fury.io/py/django-query-tracer.svg\n :target: https://badge.fury.io/py/django-query-tracer\n\n.. image:: https://travis-ci.org/morlandi/django-query-tracer.svg?branch=master\n :target: https://travis-ci.org/morlandi/django-query-tracer\n\n.. image:: https://codecov.io/gh/morlandi/django-query-tracer/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/morlandi/django-query-tracer\n\nA simplified version of django-devserver limited to SQL tracing and Ajax dump.\n\nMotivations\n-----------\n\ndjango-devserver is a very nice and usefull package, but the project isn't very active,\nand occasional problems related to new Django versions stay unfixed for long time even\nwhen a solution is available as PR.\n\nBeing mostly interested in tracing db queries, I finally decided to package a\nstripped down version of the project.\n\nScreenshots\n-----------\n\n.. image:: screenshots/screenshot_001.png\n\nQuickstart\n----------\n\nInstall django-query-tracer::\n\n pip install django-query-tracer\n\nAdd it to your `INSTALLED_APPS`:\n\n.. code-block:: python\n\n INSTALLED_APPS = (\n ...\n 'query_tracer',\n ...\n )\n\nAdd django-query-tracer's middleware:\n\n.. code-block:: python\n\n MIDDLEWARE_CLASSES = [\n ...\n 'query_tracer.middleware.QueryTracerMiddleware',\n ...\n ]\n\nSettings\n--------\n\nQUERYTRACER_MODULES\n\n Selects active modules.\n\n Default: []\n\n Example::\n\n QUERYTRACER_MODULES = [\n 'query_tracer.modules.sql.SQLRealTimeModule',\n 'query_tracer.modules.sql.SQLSummaryModule',\n 'query_tracer.modules.ajax.AjaxDumpModule',\n 'query_tracer.modules.time.TimeModule',\n ]\n\nQUERYTRACER_FILTER_OUT_SQL\n\n A list of regex patterns to filter out SQL queries.\n\n Queries matching any of the given patterns will be excluded from log.\n\n Example::\n\n QUERYTRACER_FILTER_OUT_SQL [\n re.compile('djkombu_\\w+'), # Filter all queries related to Celery\n ]\n\nQUERYTRACER_FILTER_IN_SQL\n\n A list of regex patterns to filter in SQL queries.\n\n Only queries matching all patterns will be included in the log.\n\n Example::\n\n QUERYTRACER_FILTER_IN_SQL = [\n re.compile('sync_logs'),\n re.compile('date_created'),\n ]\n\nDEVSERVER_TRUNCATE_SQL\n\n Disable SQL query truncation (used in SQLRealTimeModule) setting this to False\n\nQUERYTRACER_AJAX_CONTENT_LENGTH\n\n Ajax responses longer than this will not be logged.\n\n Default: 300\n\nQUERYTRACER_AJAX_PRETTY_PRINT\n\n If set, try to format ajax requests and responses as intented JSON\n\nQUERYTRACER_SQL_MIN_DURATION\n\n Minimum time a query must execute to be shown, value is in MS\n\n Default: None\n\n\nSample local setup for development\n----------------------------------\n\n.. code-block:: python\n\n # Install query_tracer\n\n INSTALLED_APPS.append('query_tracer')\n\n MIDDLEWARE_CLASSES += [\n 'query_tracer.middleware.QueryTracerMiddleware',\n ]\n\n QUERYTRACER_MODULES = (\n 'query_tracer.modules.sql.SQLRealTimeModule',\n 'query_tracer.modules.sql.SQLSummaryModule',\n 'query_tracer.modules.ajax.AjaxDumpModule',\n 'query_tracer.modules.time.TimeModule',\n )\n\n #QUERYTRACER_AJAX_CONTENT_LENGTH = 10000\n QUERYTRACER_AJAX_PRETTY_PRINT = True\n QUERYTRACER_TRUNCATE_SQL = False\n\n QUERYTRACER_FILTER_IN_SQL = [\n re.compile('sync_logs'),\n re.compile('date_created'),\n ]\n\nFeatures\n--------\n\nSee file \"query_tracer/settings.py\" for available options, and refer to\n`django-devserver doc `_ for usage/\n\nTime module\n-----------\n\nA simple **TimeModule** module has been added to display the time required to\nprocess each Django view.\n\nUtility functions\n-----------------\n\nquery_traces.utils.trace.trace\n Prints a text message or list, optionally prettified\n\nquery_traces.utils.trace.prettyprint_query\n Format and print a generic SQL query\n\nquery_traces.utils.trace.prettyprint_queryset\n Format and print a queryset's query\n\nquery_traces.utils.trace.trace_func\n Prints function calls, showing actual parameters;\n to be used as decorator\n\nquery_traces.utils.time.ms_from_timedelta\n Returns timedelta in milliseconds\n\nCredits\n-------\n\nThis project is a stripped down version of:\n\n* `django-devserver `_\n\n\nTools used in rendering this package:\n\n* Cookiecutter_\n* `cookiecutter-djangopackage`_\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage\n\n\n\n\n0.2.0\n-----\n* fix for Python 3.x\n\n0.1.5\n-----\n* Mimic SQLSummaryModule on completion of SQLRealTimeModule\n\n0.1.4\n-----\n* TimeModule added\n\n0.1.3\n-----\n* Prepare for Python3\n* Enhanced sql summary logging\n\n0.1.2\n-----\n\n* Default settings more suitable for production\n\n0.1.1\n-----\n* Version comparison fix required after Django 1.10 to solve \"maximum recursion depth exceeded on Django 1.10 #132\" issue\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/morlandi/django-query-tracer", "keywords": "django-query-tracer", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-query-tracer", "package_url": "https://pypi.org/project/django-query-tracer/", "platform": "", "project_url": "https://pypi.org/project/django-query-tracer/", "project_urls": { "Homepage": "https://github.com/morlandi/django-query-tracer" }, "release_url": "https://pypi.org/project/django-query-tracer/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "A simplified version of django-devserver limited to SQL tracing and Ajax dump.", "version": "0.2.2" }, "last_serial": 4315490, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "ca27b1aa558356c139f55926a352f3ec", "sha256": "cc584e86f9ed96ec8b1973d6c5335403c96b3c0f31f3130eb2e4cb1951c10fb7" }, "downloads": -1, "filename": "django_query_tracer-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ca27b1aa558356c139f55926a352f3ec", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12461, "upload_time": "2017-09-25T10:01:00", "url": "https://files.pythonhosted.org/packages/01/a6/fb139797f025e4fca96dc2869d0fd5a5396dd162e919c6173e1b72cec684/django_query_tracer-0.1.1-py2.py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a1db53628324b9662f20aeb5d79859c7", "sha256": "184b73c1d78c5d0581744a2e0278d8e821d9a296151ad8310ca20df8e3fcf649" }, "downloads": -1, "filename": "django_query_tracer-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a1db53628324b9662f20aeb5d79859c7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12720, "upload_time": "2017-09-25T10:19:28", "url": "https://files.pythonhosted.org/packages/37/22/cd583397c18772744e57a681350b6f203199eedc1e89bdeed118c159fdc6/django_query_tracer-0.1.2-py2.py3-none-any.whl" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "019b51c0989f60b5df3ee3f8a994d6e3", "sha256": "10548ed0f3735fa41f699454042112f4507ba204d24a09099b5a12153183f47e" }, "downloads": -1, "filename": "django_query_tracer-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "019b51c0989f60b5df3ee3f8a994d6e3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13013, "upload_time": "2017-09-25T15:55:27", "url": "https://files.pythonhosted.org/packages/07/e6/15b427793af25c672259562874dc108cf888dfbc94663ab151c4e01f37c2/django_query_tracer-0.1.3-py2.py3-none-any.whl" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "c6f0f6dea61964ff11a46b022162af8c", "sha256": "156f9f7a9209572724714dc330e3bfb862360585c80a37732e6b37bdaa77b753" }, "downloads": -1, "filename": "django_query_tracer-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c6f0f6dea61964ff11a46b022162af8c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14033, "upload_time": "2017-11-01T18:03:21", "url": "https://files.pythonhosted.org/packages/05/e1/c6f40c4bead4552709de39a2d85a850eb906844bac463386ab27f0e677c7/django_query_tracer-0.1.4-py2.py3-none-any.whl" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "3659a7ed185b5bd39b0e2f0634714465", "sha256": "556d1fd855cfa29d940928ea29a0081e650eb5c5fa679934f17e734dc5097620" }, "downloads": -1, "filename": "django_query_tracer-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3659a7ed185b5bd39b0e2f0634714465", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14260, "upload_time": "2017-11-04T09:53:32", "url": "https://files.pythonhosted.org/packages/f4/cb/b110facf4019bf88604d19442541ac47f8b712e4f79900cb1cc33b24e0ec/django_query_tracer-0.1.5-py2.py3-none-any.whl" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "8123dc040b9739a8811e51e2eec1a5c1", "sha256": "bbf935a451e54ab89b01d63baa5e7af6497bd9cd14f3398386f8149dc816f2c9" }, "downloads": -1, "filename": "django_query_tracer-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8123dc040b9739a8811e51e2eec1a5c1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14320, "upload_time": "2018-01-09T21:33:45", "url": "https://files.pythonhosted.org/packages/7b/96/412da1f28e45287fd680ce1706eae962dcda89da83e06a25a296119717c5/django_query_tracer-0.1.6-py2.py3-none-any.whl" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "13d4495feb33a27f336f8a59ce0e4b86", "sha256": "b008f744c3ac71a614800f72403ab7a3752a23251d71c750282a69c7ffdd75c9" }, "downloads": -1, "filename": "django_query_tracer-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "13d4495feb33a27f336f8a59ce0e4b86", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14424, "upload_time": "2018-01-15T08:10:33", "url": "https://files.pythonhosted.org/packages/23/80/fca0ed17c1110b007bd747cc328062c87374df432f1fefc8264c0d23a0d6/django_query_tracer-0.1.7-py2.py3-none-any.whl" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "a649f2bf8c784f4ef082a85e0ae41ba8", "sha256": "5bf1a7b65d0e8da671c34b6805eab6daae40e2108ac687e267e6c3ed9d94f048" }, "downloads": -1, "filename": "django_query_tracer-0.1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a649f2bf8c784f4ef082a85e0ae41ba8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14601, "upload_time": "2018-01-20T15:48:43", "url": "https://files.pythonhosted.org/packages/aa/19/0f27000f9d22102ad4e7097f9323a079433b06d989cdc657492ceb841ead/django_query_tracer-0.1.8-py2.py3-none-any.whl" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3894735762f20afd0b9fe6ec24775f0c", "sha256": "f9853ddcc6ed6c9209170d16085be7c7562aecf1746cfb16862986cb5dd18928" }, "downloads": -1, "filename": "django_query_tracer-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3894735762f20afd0b9fe6ec24775f0c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14632, "upload_time": "2018-07-23T13:56:34", "url": "https://files.pythonhosted.org/packages/a9/32/fb39d9fa1d00f1e4283ecd977e9e052a93640a6ab6bb55d478515fbbbdfd/django_query_tracer-0.2.0-py2.py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "aafd26ebdc135f5dc63ced4e21c9994f", "sha256": "d912784a376cea9348868cb7ac6f0afcb94775049f4d202312f83039cf929e48" }, "downloads": -1, "filename": "django_query_tracer-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "aafd26ebdc135f5dc63ced4e21c9994f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 14619, "upload_time": "2018-09-18T10:24:57", "url": "https://files.pythonhosted.org/packages/6b/53/d69b38db87d05bcbd1b3bb2984a9d75fabd168449af17fd71257d764a0e2/django_query_tracer-0.2.1-py2.py3-none-any.whl" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "3044326790c63f099a1e832c67eb8879", "sha256": "006f8df79110cc2934e66c3e39ad10d6fdff9b3328744a2713955a176635d06d" }, "downloads": -1, "filename": "django_query_tracer-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3044326790c63f099a1e832c67eb8879", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15571, "upload_time": "2018-09-27T08:43:13", "url": "https://files.pythonhosted.org/packages/eb/84/beeacd4f8d1cd2cca0969ecb6247cd5ff44f73f3047caad4f429b3018ad1/django_query_tracer-0.2.2-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3044326790c63f099a1e832c67eb8879", "sha256": "006f8df79110cc2934e66c3e39ad10d6fdff9b3328744a2713955a176635d06d" }, "downloads": -1, "filename": "django_query_tracer-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3044326790c63f099a1e832c67eb8879", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15571, "upload_time": "2018-09-27T08:43:13", "url": "https://files.pythonhosted.org/packages/eb/84/beeacd4f8d1cd2cca0969ecb6247cd5ff44f73f3047caad4f429b3018ad1/django_query_tracer-0.2.2-py2.py3-none-any.whl" } ] }