xiaobaoqiu Blog

Think More, Code Less

Mycli

相信很多同学都喜欢使用命令行和Mysql交互而不喜欢各种图形化的客户端,我也是其中之一。

使用命令行交互的一个缺点就是没有自动补全等功能,很多时候忘记字段叫什么,不得不去看一下见表语句。

现在Mycli帮我们搞定这个问题了。Mycli是一个自带自动补全和语法高亮的Mysql客户端,也适用于MariaDB和Percona。赶紧使用Mycli替换你所以的alias吧。

Mycli官网:http://mycli.net/

1.安装

Linux下可以使用Python的包管理器pip安装,首先你得有pip,我使用的是Ubuntu:

1
sudo apt-get install python-pip

之后就可以安装Mycli了,可能需要sudo权限,因为它会往python的lib目录下加一些包

1
pip install mycli

高端的Mac同学使用brew就可以了。

感觉Windows被抛弃,更详细的安装见:http://mycli.net/install

源代码github地址:https://github.com/dbcli/mycli

使用pg数据库的同学可以使用类似的工具:pgcli

2.使用

使用上没啥特别,看看Mycli的手册就可以了,这里将英文简单翻译一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
xiaobaoqiu@xiaobaoqiu:~/Sublime/Sublime2$ mycli --help
Usage: mycli [OPTIONS] [DATABASE]

Options:
  -h, --host TEXT             数据库host
  -P, --port TEXT             数据库端口. Honors $MYSQL_TCP_PORT
  -u, --user TEXT             用户名
  -S, --socket TEXT       链接数据库使用的socket文件
  -p, --password          密码
  --pass TEXT                 密码
  -v, --version               版本
  -D, --database TEXT         数据库名字
  -R, --prompt TEXT           提示格式(默认: "\t \u@\h:\d> ")
  -l, --logfile FILENAME      将每个查询和查询的结构记录到文件
  --help                      帮助文档

一个本机的截图如下:

3.配置

配置文件默认为:~/.myclirc,我们可以简单的看一下配置,都比较简单:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# vi: ft=dosini
[main]

# Enables context sensitive auto-completion. If this is disabled the all
# possible completions will be listed.
smart_completion = True

# Multi-line mode allows breaking up the sql statements into multiple lines. If
# this is set to True, then the end of the statements must have a semi-colon.
# If this is set to False then sql statements can't be split into multiple
# lines. End of line (return) is considered as the end of the statement.
multi_line = False

# log_file location.
log_file = ~/.mycli.log

# Default log level. Possible values: "CRITICAL", "ERROR", "WARNING", "INFO"
# and "DEBUG".
log_level = INFO

# Timing of sql statments and table rendering.
timing = True

# Table format. Possible values: psql, plain, simple, grid, fancy_grid, pipe,
# orgtbl, rst, mediawiki, html, latex, latex_booktabs.
# Recommended: psql, fancy_grid and grid.
table_format = psql

# Syntax Style. Possible values: manni, igor, xcode, vim, autumn, vs, rrt,
# native, perldoc, borland, tango, emacs, friendly, monokai, paraiso-dark,
# colorful, murphy, bw, pastie, paraiso-light, trac, default, fruity
syntax_style = default

# Keybindings: Possible values: emacs, vi
key_bindings = emacs

# MySQL prompt
# \t - Product type (Percona, MySQL, Mariadb)
# \u - Username
# \h - Hostname of the server
# \d - Database name
prompt = '\t \u@\h:\d> '

4.源码

Mycli是python开发的,原因是起基于的prompt_toolkit正是python开发的。

prompt_toolkit的git地址:https://github.com/jonathanslenders/python-prompt-toolkit.git

prompt_toolkit使用著名的Pygments来做语法高亮。相信很多博客系统(包括我使用的octopress)也是使用这个来做语法高亮,突然发现世界这么小…