Top Related Projects
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.
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
- Connecting to a database:
mycli -u username -p password -h localhost -P 3306 database_name
- Executing a query with syntax highlighting:
SELECT id, name, email
FROM users
WHERE status = 'active'
ORDER BY name;
- Using auto-completion:
SELECT * FROM us[TAB]
-- Auto-completes to:
SELECT * FROM users
Getting Started
- Install MyCLI using pip:
pip install mycli
- Connect to your MySQL database:
mycli -u your_username -p your_password -h localhost database_name
- Start typing SQL commands and enjoy auto-completion and syntax highlighting:
SHOW TABLES;
SELECT * FROM table_name LIMIT 10;
- Use
\q
orCTRL+D
to exit MyCLI.
Competitor Comparisons
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.
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
mycli
A command line client for MySQL that can do auto-completion and syntax highlighting.
HomePage: http://mycli.net Documentation: http://mycli.net/docs
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:
Top Related Projects
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.
Free universal database tool and SQL client
MySQL/MariaDB database management for macOS
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot