{"id":13468909,"url":"https://github.com/vladbalmos/mitzasql","last_synced_at":"2025-12-30T05:36:56.419Z","repository":{"id":48510640,"uuid":"174017581","full_name":"vladbalmos/mitzasql","owner":"vladbalmos","description":"MySQL command line / text based interface client","archived":false,"fork":false,"pushed_at":"2024-10-28T18:37:23.000Z","size":3594,"stargazers_count":119,"open_issues_count":10,"forks_count":8,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-05T02:36:40.460Z","etag":null,"topics":["command-line-app","command-line-interface","command-line-tool","mysql","mysql-cli","mysql-client","mysql-client-linux","python","tui"],"latest_commit_sha":null,"homepage":"https://vladbalmos.github.io/mitzasql/","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/vladbalmos.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-05T20:42:01.000Z","updated_at":"2025-02-15T08:15:25.000Z","dependencies_parsed_at":"2024-06-17T08:29:49.824Z","dependency_job_id":"bdf3877a-c051-4b79-99b6-21952a6c82c9","html_url":"https://github.com/vladbalmos/mitzasql","commit_stats":{"total_commits":182,"total_committers":5,"mean_commits":36.4,"dds":0.3626373626373627,"last_synced_commit":"06c2a96eb4494095b2b72bc1454199a4940b0700"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladbalmos%2Fmitzasql","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladbalmos%2Fmitzasql/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladbalmos%2Fmitzasql/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vladbalmos%2Fmitzasql/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vladbalmos","download_url":"https://codeload.github.com/vladbalmos/mitzasql/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245597373,"owners_count":20641866,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["command-line-app","command-line-interface","command-line-tool","mysql","mysql-cli","mysql-client","mysql-client-linux","python","tui"],"created_at":"2024-07-31T15:01:21.710Z","updated_at":"2025-12-13T17:24:02.759Z","avatar_url":"https://github.com/vladbalmos.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.com/vladbalmos/mitzasql.svg?branch=master)](https://travis-ci.com/github/vladbalmos/mitzasql) [![Coverage Status](https://coveralls.io/repos/github/vladbalmos/mitzasql/badge.svg?branch=master)](https://coveralls.io/github/vladbalmos/mitzasql?branch=master) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) [![PyPI version](https://badge.fury.io/py/mitzasql.svg)](https://badge.fury.io/py/mitzasql) \n\n\n# About\nMitzaSQL is a free Python3 TUI MySQL client for Linux which aims to provide an easy-to-use console alternative to GUI clients. It is not meant to be a full-fledged GUI client, it only provides a read-only view of the database, though you can manipulate the data by using raw SQL queries. Some of the main features are:\n\n* Manage multiple sessions\n* View databases\n* View list of tables, sql views \u0026 stored procedures in a database\n* View rows in a table or sql view:\n* Easily sort table data\n* Filter table data using VIM-like commands (`:like`, `:gt`, `:lt`, `:in`...)\n* SQL Query editor with syntax highlighting, **smart autocomplete** and clipboard support (optional dependency needs to be installed)\n* VIM style keyboard shortcuts\n* VIM style commands with autocomplete support\n* Macros support\n\nMitzaSQL is heavily inspired by [HeidiSQL](https://github.com/HeidiSQL/HeidiSQL) and is licensed under [MIT](https://opensource.org/licenses/MIT). The lexer's tokens implementation uses code from [python-sqlparse](https://github.com/andialbrecht/sqlparse) project.\n\n### Demo\n[![asciicast](https://asciinema.org/a/390872.svg)](https://asciinema.org/a/390872)\n\n# Website\n[https://vladbalmos.github.io/mitzasql](https://vladbalmos.github.io/mitzasql)\n\n# System requirements\n* Linux\n* Python3 (3.6 - 3.9)\n* MySQL (5.6 - 8)\n\n# Security\nBy default MitzaSQL stores connection credentials in plain text files in your home directory. If security is a concern you could store the file in an encrypted partition/directory and specify the path to the session file when the program starts using the `--sessions_file /path/to/sessions.ini` flag. Another option would be not to persist the connection credentials when creating a new session.\n\n# Performance \u0026 known issues\nLoading large datasets will slow down the rendering. By default, when opening a table screen only the first 100 records are loaded. The rest of the data is loaded automatically when scrolling down. When running queries with the SQL Query editor make sure you don't load a large number of records or else your user experience might suffer.\n\n# Dependencies\n* urwid\n* mysql-connector-python\n* appdirs\n* pygments\n\n# Installation\n\n    pip3 install mitzasql\n\nIf you require clipboard support you need to install the extra dependency:\n\n    pip3 install mitzasql[clipboard]\n\nThis will install the [pyperclip](https://github.com/asweigart/pyperclip) module. Keep in mind that **pyperclip** requires `xclip`/`xsel` to be installed on Linux, or the `gtk`/`qt` python modules.\n\n# Development\n## Dependencies\n* tox\n* Docker (optional)\n* docker-compose (optional)\n\nDocker is only required for running the integration tests, testing during feature development can be done with tox alone (see below).\n\n## Running the development version\n\n    # If your currently installed Python version != 3.6 use TOXENV to specify it\n    tox -e dev\n    source .tox/dev/bin/activate\n    mitzasql\n\nTo run the program using a different Python version using Docker:\n\n    ./run-in-docker.sh [python version] [mysql version]\n    # ./run-in-docker.sh 36 mysql55\n    tox -e dev\n    source .tox/dev/bin/activate\n    mitzasql\n\n## Tests\nThe testing process uses tox \u0026 Docker to automate running the tests against multiple versions of Python and MySQL servers.\n\nDuring feature development Docker is not really necessary, I use it to run the test MySQL server but it that can be installed directly on the host. If that is the case, then new connection details have to be specified using environmental variables (see `tests/db/connection_fixture.py` for more details).\n\nTo run the tests during feature development run:\n\n    cp env.template .env # necessary if using Docker\n    docker-compose up # necessary if using Docker\n    tox\n\nTo generate code coverage:\n\n    ./coverage.sh\n\nCode coverage is generated in the `htmlcov` directory.\n\n### Integration testing\nSee `test-mitzasql.sh` for more info.\n\n### UI testing\nSee `test-mitzasql-ui.sh` for more info.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvladbalmos%2Fmitzasql","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvladbalmos%2Fmitzasql","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvladbalmos%2Fmitzasql/lists"}