Convert Figma logo to code with AI

dbcli logomycli

A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.

11,404
658
11,404
215

Top Related Projects

11,975

Postgres CLI with autocompletion and syntax highlighting

Library for building powerful interactive command line applications in Python

A simple and lightweight SQL client desktop with cross database and platform support.

Modern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.

39,201

Free universal database tool and SQL client

MySQL/MariaDB database management for macOS

Quick Overview

MyCLI is a command-line interface for MySQL, MariaDB, and Percona with auto-completion and syntax highlighting. It provides a user-friendly alternative to the default MySQL shell, offering enhanced features to improve productivity and ease of use when working with MySQL databases.

Pros

  • Auto-completion for SQL keywords, table names, and column names
  • Syntax highlighting for better readability of SQL queries
  • Multi-line support for complex queries
  • Configurable with a rich set of options and themes

Cons

  • Limited to MySQL, MariaDB, and Percona databases
  • May have a learning curve for users accustomed to the default MySQL shell
  • Requires additional installation and setup compared to the built-in MySQL client

Code Examples

  1. Connecting to a database:
mycli -u username -p password -h localhost -P 3306 database_name
  1. Executing a query with syntax highlighting:
SELECT id, name, email
FROM users
WHERE status = 'active'
ORDER BY name;
  1. Using auto-completion:
SELECT * FROM us[TAB]
-- Auto-completes to:
SELECT * FROM users

Getting Started

  1. Install MyCLI using pip:
pip install mycli
  1. Connect to your MySQL database:
mycli -u your_username -p your_password -h localhost database_name
  1. Start typing SQL commands and enjoy auto-completion and syntax highlighting:
SHOW TABLES;
SELECT * FROM table_name LIMIT 10;
  1. Use \q or CTRL+D to exit MyCLI.

Competitor Comparisons

11,975

Postgres CLI with autocompletion and syntax highlighting

Pros of pgcli

  • Supports PostgreSQL-specific features like psql meta-commands
  • Offers more advanced auto-completion for PostgreSQL syntax
  • Includes a multi-line mode for complex queries

Cons of pgcli

  • Limited to PostgreSQL databases only
  • May have a steeper learning curve for users familiar with MySQL

Code Comparison

pgcli:

def get_completions(self, document, complete_event):
    word_before_cursor = document.get_word_before_cursor(WORD=True)
    suggestions = self.completer.get_completions(
        document, complete_event, self.pgspecial)
    return suggestions

mycli:

def get_completions(self, document, complete_event):
    word_before_cursor = document.get_word_before_cursor(WORD=True)
    suggestions = self.completer.get_completions(
        document, complete_event)
    return suggestions

Both pgcli and mycli are command-line interfaces for database management, developed by the same organization (dbcli). While pgcli is specifically designed for PostgreSQL, mycli caters to MySQL, MariaDB, and Percona databases. They share similar core functionalities but differ in their database-specific features and optimizations.

The code comparison shows that pgcli includes an additional parameter self.pgspecial in its get_completions method, which likely handles PostgreSQL-specific completions. This reflects pgcli's focus on PostgreSQL-specific features and syntax.

Library for building powerful interactive command line applications in Python

Pros of python-prompt-toolkit

  • More versatile and can be used for various command-line interfaces, not just MySQL
  • Offers advanced features like syntax highlighting, auto-suggestion, and multi-line editing
  • Provides a comprehensive toolkit for building rich, interactive command-line applications

Cons of python-prompt-toolkit

  • Steeper learning curve due to its more general-purpose nature
  • Requires more setup and configuration for specific use cases like MySQL interaction

Code Comparison

python-prompt-toolkit:

from prompt_toolkit import prompt
from prompt_toolkit.history import FileHistory

user_input = prompt('> ', history=FileHistory('history.txt'))
print(f'You entered: {user_input}')

mycli:

from mycli.main import MyCli

mycli = MyCli()
mycli.connect(database='mydb')
mycli.run_cli()

Summary

python-prompt-toolkit is a more general-purpose library for building command-line interfaces, offering advanced features and flexibility. It's suitable for various applications but requires more setup for specific use cases. mycli, on the other hand, is tailored specifically for MySQL interactions, providing a simpler setup but with less versatility for other applications.

A simple and lightweight SQL client desktop with cross database and platform support.

Pros of Sqlectron

  • Graphical user interface for easier database management
  • Supports multiple database types (MySQL, PostgreSQL, SQLite, etc.)
  • Cross-platform compatibility (Windows, macOS, Linux)

Cons of Sqlectron

  • Requires more system resources due to GUI
  • May have a steeper learning curve for command-line enthusiasts
  • Less suitable for quick, one-off database queries

Code Comparison

Mycli (command-line interface):

$ mycli -h localhost -u root -p mypassword mydatabase
mycli> SELECT * FROM users WHERE id = 1;

Sqlectron (GUI-based):

// No direct code comparison available as Sqlectron is GUI-based
// Users interact with the database through a graphical interface

Summary

Mycli is a command-line tool specifically designed for MySQL, offering a lightweight and efficient solution for quick database interactions. It's ideal for users comfortable with terminal-based workflows and those seeking rapid query execution.

Sqlectron, on the other hand, provides a graphical user interface for managing multiple database types across different platforms. It offers a more visual approach to database management, which may be preferable for users who prefer GUI-based tools or need to work with various database systems.

The choice between Mycli and Sqlectron depends on the user's specific needs, workflow preferences, and the range of databases they need to manage.

Modern and easy to use SQL client for MySQL, Postgres, SQLite, SQL Server, and more. Linux, MacOS, and Windows.

Pros of Beekeeper Studio

  • Graphical user interface (GUI) for easier database management
  • Supports multiple database types (MySQL, PostgreSQL, SQLite, etc.)
  • Cross-platform compatibility (Windows, macOS, Linux)

Cons of Beekeeper Studio

  • Larger resource footprint due to GUI and cross-platform nature
  • May have a steeper learning curve for command-line enthusiasts
  • Less suitable for quick, terminal-based database interactions

Code Comparison

Beekeeper Studio (JavaScript):

const connection = new Connection({
  type: 'mysql',
  host: 'localhost',
  port: 3306,
  username: 'root',
  password: 'password',
  database: 'mydb'
});

MyCLI (Python):

mycli -h localhost -u root -p password mydb

Summary

Beekeeper Studio offers a user-friendly GUI for managing multiple database types across different platforms, making it suitable for users who prefer visual interfaces. However, it may consume more system resources and be less efficient for quick command-line operations.

MyCLI, on the other hand, is a lightweight, command-line tool specifically designed for MySQL. It's ideal for users comfortable with terminal-based interactions and those seeking quick database access with minimal resource usage.

The choice between these tools depends on the user's preferences, workflow, and specific database management needs.

39,201

Free universal database tool and SQL client

Pros of DBeaver

  • Supports multiple database systems, not limited to MySQL
  • Offers a graphical user interface for easier navigation and visualization
  • Provides advanced features like data modeling and ERD generation

Cons of DBeaver

  • Heavier resource consumption due to its GUI nature
  • Steeper learning curve for users accustomed to command-line interfaces
  • May be overkill for simple database operations

Code Comparison

While a direct code comparison isn't particularly relevant due to the different nature of these tools (CLI vs GUI), we can compare how they handle basic connection setup:

MyCLI:

mycli -h localhost -u username -p password -D database_name

DBeaver (connection properties in XML):

<connection host="localhost" port="3306" server="" database="database_name" url="jdbc:mysql://localhost:3306/database_name" user="username" password="encoded_password" type="dev"/>

Both tools aim to simplify database interactions, but MyCLI focuses on providing an enhanced command-line experience specifically for MySQL, while DBeaver offers a comprehensive GUI-based solution for multiple database systems. The choice between them depends on user preferences, specific database needs, and the complexity of tasks to be performed.

MySQL/MariaDB database management for macOS

Pros of Sequel-Ace

  • Graphical user interface for easier database management
  • Supports multiple database connections simultaneously
  • Offers visual query builder and schema designer

Cons of Sequel-Ace

  • Limited to macOS platform
  • Requires more system resources compared to CLI tools
  • May have a steeper learning curve for command-line enthusiasts

Code Comparison

Sequel-Ace (SQL query execution):

SELECT * FROM users WHERE age > 18;

MyCLI (SQL query execution):

mysql> SELECT * FROM users WHERE age > 18;

Additional Notes

MyCLI is a command-line interface for MySQL, MariaDB, and Percona, offering features like auto-completion and syntax highlighting. It's lightweight, cross-platform, and ideal for users comfortable with terminal environments.

Sequel-Ace, on the other hand, is a full-featured MySQL/MariaDB database management tool with a graphical interface, making it more accessible for users who prefer visual interactions. It's the successor to Sequel Pro but is exclusive to macOS.

The choice between these tools depends on personal preference, workflow, and the specific requirements of the database management tasks at hand. MyCLI excels in quick, efficient command-line operations, while Sequel-Ace provides a more comprehensive visual approach to database management.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

mycli

Build Status

A command line client for MySQL that can do auto-completion and syntax highlighting.

HomePage: http://mycli.net Documentation: http://mycli.net/docs

Completion CompletionGif

Postgres Equivalent: http://pgcli.com

Quick Start

If you already know how to install python packages, then you can install it via pip:

You might need sudo on linux.

$ pip install -U mycli

or

$ brew update && brew install mycli  # Only on macOS

or

$ sudo apt-get install mycli # Only on debian or ubuntu

Usage

$ mycli --help
Usage: mycli [OPTIONS] [DATABASE]

  A MySQL terminal client with auto-completion and syntax highlighting.

  Examples:
    - mycli my_database
    - mycli -u my_user -h my_host.com my_database
    - mycli mysql://my_user@my_host.com:3306/my_database

Options:
  -h, --host TEXT               Host address of the database.
  -P, --port INTEGER            Port number to use for connection. Honors
                                $MYSQL_TCP_PORT.

  -u, --user TEXT               User name to connect to the database.
  -S, --socket TEXT             The socket file to use for connection.
  -p, --password TEXT           Password to connect to the database.
  --pass TEXT                   Password to connect to the database.
  --ssh-user TEXT               User name to connect to ssh server.
  --ssh-host TEXT               Host name to connect to ssh server.
  --ssh-port INTEGER            Port to connect to ssh server.
  --ssh-password TEXT           Password to connect to ssh server.
  --ssh-key-filename TEXT       Private key filename (identify file) for the
                                ssh connection.

  --ssh-config-path TEXT        Path to ssh configuration.
  --ssh-config-host TEXT        Host to connect to ssh server reading from ssh
                                configuration.

  --ssl                         Enable SSL for connection (automatically
                                enabled with other flags).
  --ssl-ca PATH                 CA file in PEM format.
  --ssl-capath TEXT             CA directory.
  --ssl-cert PATH               X509 cert in PEM format.
  --ssl-key PATH                X509 key in PEM format.
  --ssl-cipher TEXT             SSL cipher to use.
  --tls-version [TLSv1|TLSv1.1|TLSv1.2|TLSv1.3]
                                TLS protocol version for secure connection.

  --ssl-verify-server-cert      Verify server's "Common Name" in its cert
                                against hostname used when connecting. This
                                option is disabled by default.

  -V, --version                 Output mycli's version.
  -v, --verbose                 Verbose output.
  -D, --database TEXT           Database to use.
  -d, --dsn TEXT                Use DSN configured into the [alias_dsn]
                                section of myclirc file.

  --list-dsn                    list of DSN configured into the [alias_dsn]
                                section of myclirc file.

  --list-ssh-config             list ssh configurations in the ssh config
                                (requires paramiko).

  -R, --prompt TEXT             Prompt format (Default: "\t \u@\h:\d> ").
  -l, --logfile FILENAME        Log every query and its results to a file.
  --defaults-group-suffix TEXT  Read MySQL config groups with the specified
                                suffix.

  --defaults-file PATH          Only read MySQL options from the given file.
  --myclirc PATH                Location of myclirc file.
  --auto-vertical-output        Automatically switch to vertical output mode
                                if the result is wider than the terminal
                                width.

  -t, --table                   Display batch output in table format.
  --csv                         Display batch output in CSV format.
  --warn / --no-warn            Warn before running a destructive query.
  --local-infile BOOLEAN        Enable/disable LOAD DATA LOCAL INFILE.
  -g, --login-path TEXT         Read this path from the login file.
  -e, --execute TEXT            Execute command and quit.
  --init-command TEXT           SQL statement to execute after connecting.
  --charset TEXT                Character set for MySQL session.
  --password-file PATH          File or FIFO path containing the password
                                to connect to the db if not specified otherwise
  --help                        Show this message and exit.

Features

mycli is written using prompt_toolkit.

  • Auto-completion as you type for SQL keywords as well as tables, views and columns in the database.
  • Syntax highlighting using Pygments.
  • Smart-completion (enabled by default) will suggest context-sensitive completion.
    • SELECT * FROM <tab> will only show table names.
    • SELECT * FROM users WHERE <tab> will only show column names.
  • Support for multiline queries.
  • Favorite queries with optional positional parameters. Save a query using \fs alias query and execute it with \f alias whenever you need.
  • Timing of sql statements and table rendering.
  • Config file is automatically created at ~/.myclirc at first launch.
  • Log every query and its results to a file (disabled by default).
  • Pretty prints tabular data (with colors!)
  • Support for SSL connections
  • Some features are only exposed as key bindings

Contributions:

If you're interested in contributing to this project, first of all I would like to extend my heartfelt gratitude. I've written a small doc to describe how to get this running in a development setup.

https://github.com/dbcli/mycli/blob/main/CONTRIBUTING.md

Please feel free to reach out to me if you need help.

My email: amjith.r@gmail.com

Twitter: @amjithr

Detailed Install Instructions:

Arch, Manjaro

You can install the mycli package available in the AUR:

$ yay -S mycli

Debian, Ubuntu

On Debian, Ubuntu distributions, you can easily install the mycli package using apt:

$ sudo apt-get install mycli

Fedora

Fedora has a package available for mycli, install it using dnf:

$ sudo dnf install mycli

Windows

Follow the instructions on this blogpost: https://www.codewall.co.uk/installing-using-mycli-on-windows/

Thanks:

This project was funded through kickstarter. My thanks to the backers who supported the project.

A special thanks to Jonathan Slenders for creating Python Prompt Toolkit, which is quite literally the backbone library, that made this app possible. Jonathan has also provided valuable feedback and support during the development of this app.

Click is used for command line option parsing and printing error messages.

Thanks to PyMysql for a pure python adapter to MySQL database.

Compatibility

Mycli is tested on macOS and Linux, and requires Python 3.7 or better.

Mycli is not tested on Windows, but the libraries used in this app are Windows-compatible. This means it should work without any modifications. If you're unable to run it on Windows, please file a bug.

Configuration and Usage

For more information on using and configuring mycli, check out our documentation.

Common topics include: