[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72189":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":39,"readmeContent":40,"aiSummary":41,"trendingCount":15,"starSnapshotCount":15,"syncStatus":42,"lastSyncTime":43,"discoverSource":44},72189,"sqlit","Maxteabag\u002Fsqlit","Maxteabag","A user friendly TUI for SQL databases. Written in python. Supports SQL server, Mysql, PostreSQL, SQLite, Turso and more.","",null,"Python",4312,121,13,0,15,36,170,45,106.26,"MIT License",false,"main",true,[26,27,28,29,30,31,32,33,34,35,36,37,38],"cockroachdb","command-line-tool","duckdb","mariadb","mysql","oracle","postgresql","python","sql","sqlite","ssh","tui","turso","2026-06-12 04:01:04","\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Ffavorites\u002Flogo_sqlit.png\" alt=\"sqlit logo\" width=\"180\">\n\u003C\u002Fp>\n\n\u003Ch3 align=\"center\">The lazygit of SQL databases\u003C\u002Fh3>\n\n\u003Cp align=\"center\">\n  \u003Cem>Connect and query your database from your terminal in seconds.\u003C\u002Fem>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FMaxteabag\u002Fsqlit\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FMaxteabag\u002Fsqlit?style=flat&color=yellow\" alt=\"GitHub Stars\">\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10+-blue.svg\" alt=\"Python\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-green.svg\" alt=\"License\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ccode>pipx install sqlit-tui\u003C\u002Fcode>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.buymeacoffee.com\u002FPeterAdams\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBuy%20Me%20a%20Coffee-ffdd00?style=flat&logo=buy-me-a-coffee&logoColor=black\" alt=\"Buy Me a Coffee\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n### Connect\nSupports all major databases: SQL Server, PostgreSQL, MySQL, SQLite, MariaDB, FirebirdSQL, Oracle, DuckDB, CockroachDB, ClickHouse, Snowflake, Supabase, CloudFlare D1, Turso, Athena, BigQuery, Spanner, RedShift, IBM Db2, SAP HANA, Teradata, Trino, Presto, Apache Flight SQL, Apache Impala, SurrealDB and osquery.\n\n![Database Providers](docs\u002Fdemos\u002Fdemo-providers.gif)\n\n### Query\nSyntax highlighting. History. Vim-style keybindings.\n\n![Query History](docs\u002Fdemos\u002Fdemo-history.gif)\n\n### Results\nLoad millions of rows. Inspect data, filter by content, fuzzy search.\n\n![Filter results](docs\u002Fdemos\u002Fdemo-filter\u002Fdemo-filter.gif)\n\n### Docker Discovery\nAutomatically finds running database containers. Press 'Enter' to connect, sqlit figures out the details for you.\n\n![Docker Discovery](docs\u002Fdemos\u002Fdemo-docker-picker.gif)\n\n---\n\n## Features\n\n**Connection manager:** Save and switch connections without CLI args\n\n**Just run `sqlit`:** No CLI config needed, pick a connection and go\n\n**Multi-database support:** PostgreSQL, MySQL, SQLite, SQL Server, and 10+ more\n\n**Docker integration:** Auto-detect running database containers\n\n**Cloud CLI integration:** Easily browse and connect to your external databases through Azure, AWS and GCP CLI's\n\n**SSH tunnels:** Connect to remote databases securely with password or key auth\n\n**Secure credentials:** Passwords stored in your OS keyring\n\n**Vim-style editing:** Modal editing for terminal purists\n\n**Query history:** Searchable, per-connection history\n\n**Filter results:** Fuzzy search through millions of rows\n\n**Context-aware help:** Keybindings shown on screen\n\n**Browse databases:** Tables, views, procedures, indexes, triggers, sequences\n\n**Autocomplete:** Sophisticated SQL completion engine for tables, columns, and procedures\n\n**CLI mode:** Execute SQL from the command line\n\n**Themes:** Rose Pine, Tokyo Night, Nord, Gruvbox\n\n**Dependency wizard:** Auto-install missing drivers\n\n---\n\n## Motivation\n\nThroughout my career, the undesputed truth was that heavy GUI's like SSMS was the only respectable way to access a database. It didn't matter that I wasn't a DBA, or that I didn't need complex performance graphs. I was expected to install a gigabyte-heavy behemoth that took ages to launch all for the mere purpose of running a few queries to update and view a couple of rows.\n\nWhen I switched to Linux, I was suddenly unable to return to the devil I know, and I asked myself: _how do I access my data now?_\n\nThe popular answer was VS Code's SQL extension. But why should we developers launch a heavy Electron app designed for coding just to execute SQL?\n\nI had recently grown fond of Terminal UI's for their speed and keybinding focus. I looked for SQL TUIs, but the options were sparse. The ones I found lacked the user-friendliness and immediate \"pick-up-and-go\" nature of tools I loved, like lazygit, and I shortly returning to vscode sql extension.\n\nSomething wasn't right. I asked myself, why is it that running SQL queries can't be enjoyable? So I created sqlit.\n\nsqlit is for the developer who just wants to query their database with a user friendly UI without their RAM being eaten alive. It is a lightweight, beautiful, and keyboard-driven TUI designed to make accessing your data enjoyable, fast and easy like it should be-- all from inside your favorite terminal.\n\n---\n\n## Installation\n\n```bash\n# pipx (recommended)\npipx install sqlit-tui\n\n# uv\nuv tool install sqlit-tui\n\n# pip\npip install sqlit-tui\n\n# Arch Linux (AUR)\nyay -S sqlit\n\n# Nix (flake)\nnix run github:Maxteabag\u002Fsqlit\n```\n\n## Usage\n\n```bash\nsqlit\n```\n\nThe keybindings are shown at the bottom of the screen.\n\n### Try it without a database\n\nWant to explore the UI without connecting to a real database? Run with mock data:\n\n```bash\nsqlit --mock=sqlite-demo\n```\n\n### CLI\n\n```bash\nsqlit -c \"MyConnection\"\nsqlit --connection \"MyConnection\"\n\n# Run a query\nsqlit query -c \"MyConnection\" -q \"SELECT * FROM Users\"\n\n# Output as CSV or JSON\nsqlit query -c \"MyConnection\" -q \"SELECT * FROM Users\" --format csv\nsqlit query -c \"MyConnection\" -f \"script.sql\" --format json\n\n# Create connections for different databases\nsqlit connections add mssql --name \"MySqlServer\" --server \"localhost\" --auth-type sql\nsqlit connections add postgresql --name \"MyPostgres\" --server \"localhost\" --username \"user\" --password \"pass\"\nsqlit connections add mysql --name \"MyMySQL\" --server \"localhost\" --username \"user\" --password \"pass\"\nsqlit connections add cockroachdb --name \"MyCockroach\" --server \"localhost\" --port \"26257\" --database \"defaultdb\" --username \"root\"\nsqlit connections add sqlite --name \"MyLocalDB\" --file-path \"\u002Fpath\u002Fto\u002Fdatabase.db\"\nsqlit connections add turso --name \"MyTurso\" --server \"libsql:\u002F\u002Fyour-db.turso.io\" --password \"your-auth-token\"\nsqlit connections add firebird --name \"MyFirebird\" --server \"localhost\" --username \"user\" --password \"pass\" --database \"employee\"\nsqlit connections add athena --name \"MyAthena\" --athena-region-name \"us-east-1\" --athena-s3-staging-dir \"s3:\u002F\u002Fmy-bucket\u002Fresults\u002F\" --athena-auth-method \"profile\" --athena-profile-name \"default\"\nsqlit connections add athena --name \"MyAthenaKeys\" --athena-region-name \"us-east-1\" --athena-s3-staging-dir \"s3:\u002F\u002Fmy-bucket\u002Fresults\u002F\" --athena-auth-method \"keys\" --username \"ACCESS_KEY\" --password \"SECRET_KEY\"\n\n# Connect via SSH tunnel\nsqlit connections add postgresql --name \"RemoteDB\" --server \"db-host\" --username \"dbuser\" --password \"dbpass\" \\\n  --ssh-enabled --ssh-host \"ssh.example.com\" --ssh-username \"sshuser\" --ssh-auth-type password --ssh-password \"sshpass\"\n\n# Fetch password from a secrets manager (1Password, pass, Vault, etc.)\nsqlit connections add postgresql --name \"ProdDB\" --server \"prod.example.com\" --username \"dbuser\" \\\n  --password-command \"op read 'op:\u002F\u002FWork\u002Fprod-db\u002Fpassword'\"\n\n# Temporary (not saved) connection\nsqlit connect sqlite --file-path \"\u002Fpath\u002Fto\u002Fdatabase.db\"\n\n# Connect via URL - scheme determines database type (postgresql:\u002F\u002F, mysql:\u002F\u002F, sqlite:\u002F\u002F, etc.)\nsqlit postgresql:\u002F\u002Fuser:pass@localhost:5432\u002Fmydb\nsqlit mysql:\u002F\u002Froot@localhost\u002Ftestdb\nsqlit sqlite:\u002F\u002F\u002Fpath\u002Fto\u002Fdatabase.db\n\n# Save a connection via URL\nsqlit connections add --url dbtype:\u002F\u002Fuser:pass@host\u002Fdb --name \"MyDB\"\n\n# Provider-specific CLI help\nsqlit connect -h\nsqlit connect supabase -h\nsqlit connections add -h\nsqlit connections add supabase -h\n\n# Manage connections\nsqlit connections list\nsqlit connections delete \"MyConnection\"\n```\n\n## Keybindings\n\n| Key | Action |\n|-----|--------|\n| `i` | Enter INSERT mode |\n| `Esc` | Back to NORMAL mode |\n| `e` \u002F `q` \u002F `r` | Focus Explorer \u002F Query \u002F Results |\n| `s` | SELECT TOP 100 from table |\n| `h` | Query history |\n| `d` | Clear query |\n| `n` | New query (clear all) |\n| `y` | Copy query (when query editor is focused) |\n| `v` \u002F `y` \u002F `Y` \u002F `a` | View cell \u002F Copy cell \u002F Copy row \u002F Copy all |\n| `Ctrl+Q` | Quit |\n| `?` | Help |\n\n### Vim Motions (Query Editor, NORMAL mode)\n\nUse with operators like `y`, `d`, `c` (e.g. `dw`, `y$`).\n\n| Motion | Action |\n|--------|--------|\n| `h` \u002F `j` \u002F `k` \u002F `l` | Move cursor left \u002F down \u002F up \u002F right |\n| `w` \u002F `W` | Next word \u002F WORD |\n| `b` \u002F `B` | Previous word \u002F WORD |\n| `0` \u002F `$` | Line start \u002F end |\n| `gg` \u002F `G` | File start \u002F end |\n| `f{c}` \u002F `F{c}` | Find char forward \u002F backward |\n| `t{c}` \u002F `T{c}` | Till char forward \u002F backward |\n| `%` | Matching bracket |\n\n### Commands Menu (`\u003Cspace>`)\n\n| Key | Action |\n|-----|--------|\n| `\u003Cspace>c` | Connect to database |\n| `\u003Cspace>x` | Disconnect |\n| `\u003Cspace>z` | Cancel running query |\n| `\u003Cspace>e` | Toggle Explorer |\n| `\u003Cspace>f` | Toggle Maximize |\n| `\u003Cspace>t` | Change theme |\n| `\u003Cspace>h` | Help |\n| `\u003Cspace>q` | Quit |\n\nAutocomplete triggers automatically in INSERT mode. Use `Tab` to accept.\n\n---\n\n## Configuration\n\nConnections and settings are stored in `$XDG_CONFIG_HOME\u002Fsqlit\u002F` (default: `~\u002F.config\u002Fsqlit\u002F`). Override the location by setting `SQLIT_CONFIG_DIR`.\n\nIf an older install left files in `~\u002F.sqlit\u002F`, they are moved to the new location automatically on first run.\n\n## FAQ\n\n### How are sensitive credentials stored?\n\nConnection details are stored in `connections.json` inside the config directory, but passwords are stored in your OS keyring when available (macOS Keychain, Windows Credential Locker, Linux Secret Service).\n\n### How does sqlit compare to Harlequin, Lazysql, etc.?\n\nsqlit is inspired by [lazygit](https:\u002F\u002Fgithub.com\u002Fjesseduffield\u002Flazygit) - you can just jump in and there's no need for external documentation. The keybindings are shown at the bottom of the screen and the UI is designed to be intuitive without memorizing shortcuts.\n\nKey differences:\n- **No need for external documentation** - Sqlit embrace the \"lazy\" approach in that a user should be able to jump in and use it right away intuitively. There should be no setup instructions. If python packages are required for certain adapters, sqlit will help you install them as you need them.\n- **No CLI config required** - Just run `sqlit` and pick a connection from the UI\n- **Lightweight** - While Lazysql or Harlequin offer more features, I experienced that for the vast majority of cases, all I needed was a simple and fast way to connect and run queries. Sqlit is focused on doing a limited amount of things really well.\n\n---\n\n## Inspiration\n\nsqlit is built with [Textual](https:\u002F\u002Fgithub.com\u002FTextualize\u002Ftextual) and inspired by:\n- [lazygit](https:\u002F\u002Fgithub.com\u002Fjesseduffield\u002Flazygit) - Simple  TUI for git\n- [lazysql](https:\u002F\u002Fgithub.com\u002Fjorgerojas26\u002Flazysql) - Terminal-based SQL client with connection manager\n\n## Contributing\n\nSee `CONTRIBUTING.md` for development setup, testing, and CI steps.\n\n### Driver Reference\n\nMost of the time you can just run `sqlit` and connect. If a Python driver is missing, `sqlit` will show (and often run) the right install command for your environment.\n\n| Database                            | Driver package               | `pipx`                                             | `pip` \u002F venv                                       |\n| :---------------------------------- | :--------------------------- | :------------------------------------------------- | :------------------------------------------------- |\n| SQLite                              | *(built-in)*                 | *(built-in)*                                       | *(built-in)*                                       |\n| PostgreSQL \u002F CockroachDB \u002F Supabase | `psycopg2-binary`            | `pipx inject sqlit-tui psycopg2-binary`            | `python -m pip install psycopg2-binary`            |\n| SQL Server                          | `mssql-python`               | `pipx inject sqlit-tui mssql-python`               | `python -m pip install mssql-python`               |\n| MySQL                               | `PyMySQL`                    | `pipx inject sqlit-tui PyMySQL`                    | `python -m pip install PyMySQL`                    |\n| MariaDB                             | `mariadb`                    | `pipx inject sqlit-tui mariadb`                    | `python -m pip install mariadb`                    |\n| Oracle                              | `oracledb`                   | `pipx inject sqlit-tui oracledb`                   | `python -m pip install oracledb`                   |\n| DuckDB                              | `duckdb`                     | `pipx inject sqlit-tui duckdb`                     | `python -m pip install duckdb`                     |\n| ClickHouse                          | `clickhouse-connect`         | `pipx inject sqlit-tui clickhouse-connect`         | `python -m pip install clickhouse-connect`         |\n| Turso                               | `libsql`                     | `pipx inject sqlit-tui libsql`                     | `python -m pip install libsql`                     |\n| Cloudflare D1                       | `requests`                   | `pipx inject sqlit-tui requests`                   | `python -m pip install requests`                   |\n| Snowflake                           | `snowflake-connector-python` | `pipx inject sqlit-tui snowflake-connector-python` | `python -m pip install snowflake-connector-python` |\n| Firebird                            | `firebirdsql`                | `pipx inject sqlit-tui firebirdsql`                | `python -m pip install firebirdsql`                |\n| Athena                              | `pyathena`                   | `pipx inject sqlit-tui pyathena`                   | `python -m pip install pyathena`                   |\n| BigQuery                            | `google-cloud-bigquery`      | `pipx inject sqlit-tui google-cloud-bigquery`      | `python -m pip install google-cloud-bigquery`      |\n| Spanner                             | `google-cloud-spanner`       | `pipx inject sqlit-tui google-cloud-spanner`       | `python -m pip install google-cloud-spanner`       |\n| Apache Arrow Flight SQL             | `adbc-driver-flightsql`      | `pipx inject sqlit-tui adbc-driver-flightsql`      | `python -m pip install adbc-driver-flightsql`      |\n| Apache Impala                       | `impyla`                     | `pipx inject sqlit-tui impyla`                     | `python -m pip install impyla`                     |\n| SurrealDB                           | `surrealdb`                  | `pipx inject sqlit-tui surrealdb`                  | `python -m pip install surrealdb`                  |\n| osquery                             | `osquery`                    | `pipx inject sqlit-tui osquery`                    | `python -m pip install osquery`                    |\n\n### SSH Tunnel Support\n\nSSH tunnel functionality requires additional dependencies. Install with the `ssh` extra:\n\n```bash\n# pipx\npipx install 'sqlit-tui[ssh]'\n\n# uv\nuv tool install 'sqlit-tui[ssh]'\n\n# pip\npip install 'sqlit-tui[ssh]'\n```\n\nIf you try to create an SSH connection without these dependencies, sqlit will detect this and show you the exact command to install them for your environment.\n\n---\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=Maxteabag\u002Fsqlit&type=Date)](https:\u002F\u002Fstar-history.com\u002F#Maxteabag\u002Fsqlit&Date)\n\n---\n\n## License\n\nMIT\n","sqlit 是一个面向 SQL 数据库的用户友好型终端界面工具，使用 Python 编写。它支持多种主流数据库如 SQL Server、MySQL、PostgreSQL 和 SQLite 等，并具备语法高亮、查询历史记录以及 Vim 风格的键盘绑定等核心功能。此外，sqlit 还能自动发现并连接到运行中的 Docker 容器内的数据库，支持通过 SSH 隧道安全地访问远程数据库，并且可以与云服务提供商（如 Azure、AWS 和 GCP）集成，方便用户管理云端数据库资源。该工具适用于需要快速高效地在命令行环境中进行数据库管理和查询操作的场景，特别适合那些偏好轻量级解决方案而不愿依赖图形界面软件的专业人士。",2,"2026-06-11 03:40:46","high_star"]