Skip to main content

Text user interface MySQL client

Project description

Build Status

About

MitzaSQL 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:

  • Manage multiple sessions
  • View databases
  • View list of tables, sql views & stored procedures in a database
  • View rows in a table or sql view:
  • Easily sort table data
  • Filter table data using VIM-like commands (:like, :gt, :lt, :in...)
  • SQL Query editor with syntax highlighting
  • VIM style keyboard shortcuts
  • VIM style commands with autocomplete support
  • Macros support

MitzaSQL is heavily inspired by HeidiSQL and is licensed under MIT.

Demo

asciicast

Website

https://vladbalmos.github.io/mitzasql

System requirements

  • Linux
  • Python3 (3.5 - 3.8)
  • MySQL (5.5 - 8)

Security

By 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.

Performance & known issues

Loading 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.

Dependencies

  • urwid
  • mysql-connector-python
  • appdirs
  • pygments

Installation

pip3 install mitzasql

Development

Dependencies

  • tox
  • Docker
  • docker-compose

Docker is only required for running the integration tests, testing during feature development can be done with tox alone (see below).

Run the development version

# If your currently installed Python version != 3.6 use TOXENV to specify it
tox -e dev
source .tox/dev/bin/activate
mitzasql

To run the program using a different Python version using Docker:

./run-in-docker.sh [python version] [mysql version]
# ./run-in-docker.sh 36 mysql55
tox -e dev
source .tox/dev/bin/activate
mitzasql

Tests

The testing process uses tox & Docker to automate running the tests against multiple versions of Python and MySQL servers.

During 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).

To run the tests during feature development run:

cp env.template .env # necessary if using Docker
docker-compose up # necessary if using Docker
tox

To generate code coverage:

./coverage.sh

Code coverage is generated in the htmlcov directory.

Integration testing

See test-mitzasql.sh for more info.

UI testing

See test-mitzasql-ui.sh for more info.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mitzasql-1.2.0.tar.gz (57.4 kB view details)

Uploaded Source

Built Distribution

mitzasql-1.2.0-py3-none-any.whl (118.0 kB view details)

Uploaded Python 3

File details

Details for the file mitzasql-1.2.0.tar.gz.

File metadata

  • Download URL: mitzasql-1.2.0.tar.gz
  • Upload date:
  • Size: 57.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for mitzasql-1.2.0.tar.gz
Algorithm Hash digest
SHA256 643c6f1f21f49d144927dcee86f9dbb4fc7320247c7fc1836bf905ec1b86be56
MD5 ce78c975c1692933a55952222828699b
BLAKE2b-256 579978f13e12e2d5e0155c4fdeba8c68979532b508021e7660984d4523d1cec2

See more details on using hashes here.

File details

Details for the file mitzasql-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: mitzasql-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 118.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.8

File hashes

Hashes for mitzasql-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d92d395dc91eca1c60f3112b494d9014b6ae0861430039823e9a2eb5c2d465b3
MD5 71650a6ba675f2206a03d2f9add89eac
BLAKE2b-256 6a10f67de8a9c8c7681b61a002b7fe504fc041dbc837dd3baf70c1c471963f80

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page