{"id":16190528,"url":"https://github.com/paulfitz/catsql","last_synced_at":"2026-03-10T19:32:35.162Z","repository":{"id":62561068,"uuid":"50221949","full_name":"paulfitz/catsql","owner":"paulfitz","description":"cat for sql dbs","archived":false,"fork":false,"pushed_at":"2020-08-26T23:03:13.000Z","size":111,"stargazers_count":72,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-09-25T12:45:33.415Z","etag":null,"topics":["cat","sql"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paulfitz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-01-23T03:39:34.000Z","updated_at":"2025-04-01T03:56:55.000Z","dependencies_parsed_at":"2022-11-03T15:00:28.070Z","dependency_job_id":null,"html_url":"https://github.com/paulfitz/catsql","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/paulfitz/catsql","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfitz%2Fcatsql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfitz%2Fcatsql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfitz%2Fcatsql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfitz%2Fcatsql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paulfitz","download_url":"https://codeload.github.com/paulfitz/catsql/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paulfitz%2Fcatsql/sbom","scorecard":{"id":723063,"data":{"date":"2025-08-11","repo":{"name":"github.com/paulfitz/catsql","commit":"6bb279e8ad8305b916e5e0f0c56e9ab385434279"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Code-Review","score":0,"reason":"Found 1/24 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 13 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T11:56:45.609Z","repository_id":62561068,"created_at":"2025-08-22T11:56:45.609Z","updated_at":"2025-08-22T11:56:45.609Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30350092,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T15:55:29.454Z","status":"ssl_error","status_checked_at":"2026-03-10T15:54:58.440Z","response_time":106,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cat","sql"],"created_at":"2024-10-10T07:43:26.697Z","updated_at":"2026-03-10T19:32:35.134Z","avatar_url":"https://github.com/paulfitz.png","language":"Python","readme":"[![Build Status](https://travis-ci.org/paulfitz/catsql.svg?branch=master)](https://travis-ci.org/paulfitz/catsql)\n\ncatsql\n======\n\nA `cat` for SQL databases. Show slices of a database in your console.  Save them\nas `.csv`, `.json`, `.sqlite`, or `.xlsx` files.\n\nDatabases are read using SQLAlchemy.  They are specified using [database\nurls](http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#database-urls).\nLocal `.sqlite` databases may be specified with their filename directly.\n\nAlso has an `--edit` option that will show the output in your default text\neditor. If you make any changes, they will be applied back to the original source.\n\n![catsql](https://cloud.githubusercontent.com/assets/118367/19671892/166193f0-9a40-11e6-9824-7c4a2c8ed5fd.jpg)\n\nInstallation\n------------\n\n`pip install catsql`\n\nMake sure you install the [python driver](http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#database-urls)\nneeded for your particular database.\n\n\nExamples\n--------\n\n`catsql example.sqlite`\n\nPrints contents of entire database.  Suitable for small databases.\n\n`catsql $DATABASE_URL --color green`\n\nPrint row(s) with column `color` equal to `green` in any table.\nOn large databases, it would be a good idea to specify the table(s) to\nlook in, but on smaller databases it is convenient to let `catsql`\nfigure that out.  Tables without a column called `color` will be\nomitted from search.\n\n`catsql $DATABASE_URL --color green --sqlite slice.sqlite`\n\nSave rows with `color` equal to `green` in a local SQLite database.\nAny tables without a `color` column are ignored.  Handy for doing\nfollow-on SQL analysis offline.\n\n`catsql $DATABASE_URL --color green --excel slice.xlsx`\n\nSave rows with `color` equal to `green` in a local Excel-compatible\nspreadsheet.\n\n`catsql $DATABASE_URL --grep paul`\n\nSearch for `paul` across the entire database. Search is done on the\ndatabase server so only results are transmitted across network.\n\n`catsql $DATABASE_URL --table users`\n\nPrint a single named table from the database.  When the table is specified,\na step of probing all tables in the database can be skipped, speeding things\nup.\n\n`catsql $DATABASE_URL --count`\n\nPrints number of rows in each table of the database.  Suitable for medium\nsize databases.\n\n`catsql $DATABASE_URL --limit 3`\n\nPrint 3 rows from every table in the database.  Suitable for medium\ndatabases.\n\n`catsql $DATABASE_URL --table users --id 20`\n\nPrint row(s) with column `id` (or any other name) equal to 20 in the\ntable called `users`. This is usable on large databases.  The `--id\n20` filter can also be written as `--value id=20`. This form is useful\nfor columns whose name collides with another parameter of `catsql`.\n\n`catsql $DATABASE_URL --table users --grep paul`\n\nSearch all columns in the `users` table for the (case-insensitive)\nsequence `paul`.  The search is done by a SQL query on the database\nserver, but is nevertheless a relatively expensive operation - best for\nsmall to medium databases.\n\n`catsql $DATABASE_URL --grep paul --csv`\n\nOutput strictly in csv format, useful for piping into other tools\nsuch as `csvlook` in the `csvkit` package.\n\n`catsql $DATABASE_URL --sql \"total \u003c 1000\"`\n\nReturn rows matching a SQL condition across entire database.  Tables for\nwhih the condition makes no sense are omitted.  Can be combined with\nall other flags, such as specifying the table(s), column values, etc.\n\n`catsql $DATABASE_URL --table users --grep paul --edit`\n\nEdit whatever slice of the database you are viewing using your default\n`$EDITOR`.  Only a single table can be edited at a time, since it is\nedited strictly in CSV format, which is a single-table format.\n\n`catsql $DATABASE_URL --column id,first_name`\n\nShow just the `id` and `first_name` columns of any tables that have both\nthose columns.\n\nDemo\n----\n\n![Terminal demo](https://cloud.githubusercontent.com/assets/118367/13240849/048e2834-d9b4-11e5-9510-7812f2fc1b71.gif)\n\nUsage\n-----\n\n```\nusage: main.py [-h] [--column COLUMN] [--count] [--csv] [--distinct] [--edit]\n               [--grep GREP] [--json JSON] [--limit LIMIT] [--load-bookmark]\n               [--output OUTPUT] [--safe-null] [--save-bookmark SAVE_BOOKMARK]\n               [--sql SQL] [--table TABLE] [--terse] [--types] [--value VALUE]\n               [--verbose] [--order ORDER]\n               catsql_database_url\n\nQuickly display and edit a slice of a database.\n\npositional arguments:\n  catsql_database_url   Database url or filename. Examples: sqlite:///data.db,\n                        mysql://user:pass@host/db,\n                        postgres[ql]://user:pass@host/db, data.sqlite3\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --column COLUMN       Column to include (defaults to all columns). Can be a\n                        comma separated list of multiple columns.\n  --count               Show row counts instead of actual data.\n  --csv                 Output strictly in CSV format. Only one table can be\n                        shown.\n  --distinct            Show distinct rows only, hiding duplicates.\n  --edit                Edit original table in your favorite editor. Respects\n                        $EDITOR environment variable.\n  --excel EXCEL         Save results to an excel file.\n  --grep GREP           Search cells for occurrence of a text fragment.\n                        Translated to SQL query, performed by database.\n  --json JSON           Save results to a json file. Only one table allowed.\n  --limit LIMIT         Maximum number of rows per table.\n  --load-bookmark       Load a set of filters from a file.\n  --output OUTPUT       Save output to specified file. Incompatible with\n                        --edit.\n  --safe-null           Encode nulls in a reversible way.\n  --save-bookmark SAVE_BOOKMARK\n                        Save the current set of filters specified to a file.\n  --sql SQL             Add a raw SQL filter for rows to include. Example:\n                        \"total \u003c 1000\", \"created_at \u003e now() - interval '1\n                        day'\". Tables that don't have the columns mentioned\n                        are omitted.\n  --sqlite SQLITE       Save results to a sqlite file.\n  --table TABLE         Table to include (defaults to all tables). Can be a\n                        comma separated list of multiple tables.\n  --terse               Hide any columns with predetermined values.\n  --types               Show column types instead of actual data.\n  --value VALUE         Add a column=value filter. Example:\n                          --value id=ID --value name=Jupiter\n                        As a shortcut you can also do:\n                          --id ID --name Jupiter\n  --verbose             Show raw SQL queries as they are made.\n  --order ORDER         Columns to order by. Can be a comma separated list of\n                        columns names. Add + or - to end of name to specify\n                        ascending or descending order. Specify \"none\" to\n                        disable ordering completely (by default we always try\n                        to apply some order)\n```\n\nLicense\n-------\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulfitz%2Fcatsql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaulfitz%2Fcatsql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaulfitz%2Fcatsql/lists"}