{ "info": { "author": "Samuel Stauffer", "author_email": "samuel@descolada.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Description\n===========\n\nSquawk is a library and command line tool for running SQL queries\nagainst structured/semi-structured static files.\n(e.g. Apache logs, csv files, tcpdump output).\n\nLicense\n=======\n\nBSD\n\nSee LICENSE\n\nGoal\n====\n\nThe purpose is Squawk is to make querying for data in log files or other\nstructured files easier. Everything that Squawk does can be done by\ncombining various unix tools, but Squawk makes it ever easier to express\nmore complex relationships. It is in no way a database or meant to be\nused as such. It's merely a reporting tool.\n\nSquawk can be used from the command line for ad-hoc queries, and it can\nalso be used as a library as a part of a more in-depth reporting tool.\n\nStatus\n======\n\nStill in major development. API is guaranteed to change.\n\nRequirements\n============\n\n * Python2.5 or later 2.x\n * [pyparsing](http://pyparsing.wikispaces.com/)\n\nSupported SQL Features\n======================\n\n * Aggregates: count, min, max, avg, sum\n * GROUP BY\n * ORDER BY (single column)\n * LIMIT\n * OFFSET\n * WHERE\n * Column aliases\n * Subqueries in FROM\n\nDepartures from Standard SQL\n============================\n\n * Table list in FROM uses a space rather than a comma as a separator.\n This makes it easier on the command line to specify files.\n (e.g. FROM access.log* )\n\nParsers\n=======\n\n * Common access file formats (nginx, apache)\n * CSV\n\nOutput Formats\n==============\n\n * Basic tabular for console (like most database command line tools)\n * JSON\n * CSV\n\nExamples\n========\n\nSQL query on the command line::\n\n $ squawk \"SELECT COUNT(1) AS n, status FROM access.log GROUP BY status ORDER BY n DESC\"\n n\t| status\n ----------------------------------------\n 381353\t| 200\n 180668\t| 302\n 17976\t| 404\n 12952\t| 301\n 10836\t| 304\n 735\t| 403\n 420\t| 206\n 376\t| 416\n 123\t| 400\n 46\t| 500\n 5\t| 502\n 3\t| 408\n 3\t| 405\n 1\t| 504\n\nSQL based query through API::\n\n query = Query(\n \"SELECT COUNT(1) AS n, remote_addr\"\n \" FROM file\"\n \" WHERE status = 200\"\n \" AND remote_addr != '-'\"\n \" GROUP BY remote_addr\"\n \" ORDER BY n DESC\"\n \" LIMIT 10\")\n source = AccessLogParser(\"access.log\")\n output_console(query(source))\n \n # or\n \n query = Query(\n \"SELECT COUNT(1) AS n, remote_addr\"\n \" FROM file\"\n \" WHERE status = 200\"\n \" AND remote_addr != '-'\"\n \" GROUP BY remote_addr\"\n \" ORDER BY n DESC\"\n \" LIMIT 10\")\n source = AccessLogParser(\"access.log\")\n for row in query(source):\n print row\n\nCode generated query::\n\n source = AccessLogParser(\"access.log\")\n filtered = Filter(source, lambda row:row['status'] == 200)\n group_by = GroupBy(filtered, group_by=[\"remote_addr\"], columns=[\n lambda:Column('remote_addr'),\n lambda:CountAggregate(None, 'count(1)')])\n order_by = OrderBy(group_by, 'count(1)', True)\n limit = LimitOffset(order_by, 10)\n for row in limit:\n print row", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/samuel/squawk", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "squawk", "package_url": "https://pypi.org/project/squawk/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/squawk/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/samuel/squawk" }, "release_url": "https://pypi.org/project/squawk/0.4/", "requires_dist": null, "requires_python": null, "summary": "SQL query tool and library for static files", "version": "0.4" }, "last_serial": 1131102, "releases": { "0.2.2": [ { "comment_text": "", "digests": { "md5": "b3e0cb64c0aed3db042cea9e8ffebb17", "sha256": "4de516ef9545d290ce861982bc2bccd7002afd51c9e65c20a4664ebeb137bb2e" }, "downloads": -1, "filename": "squawk-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b3e0cb64c0aed3db042cea9e8ffebb17", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9382, "upload_time": "2010-02-08T23:19:40", "url": "https://files.pythonhosted.org/packages/cc/e3/8fd48abaa72b89ab86a71cdf070fa7f2c1e693ddfdb79f55c78481181e78/squawk-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "ab919e5bd9e12543795da2fc69a717f7", "sha256": "33321ac7ecbec7742c0deb744225a520af996c4269d007aa003f85187014bcb8" }, "downloads": -1, "filename": "squawk-0.2.3.tar.gz", "has_sig": false, "md5_digest": "ab919e5bd9e12543795da2fc69a717f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9555, "upload_time": "2010-06-29T20:03:13", "url": "https://files.pythonhosted.org/packages/02/d2/3d4c3b622c99e7d37e643612e29779fb33aeab9bed7346385401e61a3842/squawk-0.2.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "6e0b83ff0ad2a2c87c3650c513cbe6a8", "sha256": "81e6c9633ebe353d45daba70e4a4f81b54d71f44fdbe1d1eb20f4fc5f47531b7" }, "downloads": -1, "filename": "squawk-0.3.1.tar.gz", "has_sig": false, "md5_digest": "6e0b83ff0ad2a2c87c3650c513cbe6a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9108, "upload_time": "2010-11-16T23:47:08", "url": "https://files.pythonhosted.org/packages/7c/ef/0b75ef9d588cac456a86a4d17c4d5a926b1e60bfa50db0c87be19cf62ab0/squawk-0.3.1.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "106cea50738e8beb9dcac5f1b8a2c3a9", "sha256": "a7f7b7148af18dbb59a59aaa3c01a4fef0f78fc66381e850fd5198be84142f6e" }, "downloads": -1, "filename": "squawk-0.4.tar.gz", "has_sig": false, "md5_digest": "106cea50738e8beb9dcac5f1b8a2c3a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9157, "upload_time": "2014-06-19T21:19:11", "url": "https://files.pythonhosted.org/packages/51/5f/cf610a9a08709d39b22b7e2a051a179cf3054433b00f136f25aa37ae89ff/squawk-0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "106cea50738e8beb9dcac5f1b8a2c3a9", "sha256": "a7f7b7148af18dbb59a59aaa3c01a4fef0f78fc66381e850fd5198be84142f6e" }, "downloads": -1, "filename": "squawk-0.4.tar.gz", "has_sig": false, "md5_digest": "106cea50738e8beb9dcac5f1b8a2c3a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9157, "upload_time": "2014-06-19T21:19:11", "url": "https://files.pythonhosted.org/packages/51/5f/cf610a9a08709d39b22b7e2a051a179cf3054433b00f136f25aa37ae89ff/squawk-0.4.tar.gz" } ] }