跳转到主要内容

Postgres数据库的命令行界面。具有自动完成和语法高亮功能。

项目描述

我们支持乌克兰

乌克兰人民正在为他们的国家而战。许多平民、妇女和儿童遭受苦难。数百人被杀或受伤,数千人被迫流离失所。

这是一张来自我家乡哈尔科夫的照片。这个地方正好在老市中心。

screenshots/kharkiv-destroyed.jpg

照片由@fomenko_ph(Telegram)拍摄。

请考虑捐赠或志愿者。

Postgres的REPL

Build Status Code coverage report Latest Version Netlify

这是一个具有自动完成和语法高亮的Postgres客户端。

主页: http://pgcli.com

MySQL等效: http://mycli.net

screenshots/pgcli.gif screenshots/image01.png

快速入门

如果您已经知道如何安装Python包,那么您只需执行以下操作

$ pip install -U pgcli

or

$ sudo apt-get install pgcli # Only on Debian based Linux (e.g. Ubuntu, Mint, etc)
$ brew install pgcli  # Only on macOS

如果您不知道如何安装Python包,请查看详细安装说明

使用方法

$ pgcli [database_name]

or

$ pgcli postgresql://[user[:password]@][netloc][:port][/dbname][?extra=value[&other=other-value]]

示例

$ pgcli local_database

$ pgcli postgres://amjith:pa$$w0rd@example.com:5432/app_db?sslmode=verify-ca&sslrootcert=/myrootcert

更多详情

$ pgcli --help

Usage: pgcli [OPTIONS] [DBNAME] [USERNAME]

Options:
  -h, --host TEXT            Host address of the postgres database.
  -p, --port INTEGER         Port number at which the postgres instance is
                             listening.
  -U, --username TEXT        Username to connect to the postgres database.
  -u, --user TEXT            Username to connect to the postgres database.
  -W, --password             Force password prompt.
  -w, --no-password          Never prompt for password.
  --single-connection        Do not use a separate connection for completions.
  -v, --version              Version of pgcli.
  -d, --dbname TEXT          database name to connect to.
  --pgclirc FILE             Location of pgclirc file.
  -D, --dsn TEXT             Use DSN configured into the [alias_dsn] section
                             of pgclirc file.
  --list-dsn                 list of DSN configured into the [alias_dsn]
                             section of pgclirc file.
  --row-limit INTEGER        Set threshold for row limit prompt. Use 0 to
                             disable prompt.
  --less-chatty              Skip intro on startup and goodbye on exit.
  --prompt TEXT              Prompt format (Default: "\u@\h:\d> ").
  --prompt-dsn TEXT          Prompt format for connections using DSN aliases
                             (Default: "\u@\h:\d> ").
  -l, --list                 list available databases, then exit.
  --auto-vertical-output     Automatically switch to vertical output mode if
                             the result is wider than the terminal width.
  --warn [all|moderate|off]  Warn before running a destructive query.
  --help                     Show this message and exit.

pgcli 也支持许多与 psql 相同的 环境变量,用于登录选项(例如:PGHOSTPGPORTPGUSERPGPASSWORDPGDATABASE)。

还支持SSL相关环境变量,所以如果您需要通过SSL连接连接到PostgreSQL数据库,可以设置如下环境变量:

export PGSSLMODE="verify-full"
export PGSSLCERT="/your-path-to-certs/client.crt"
export PGSSLKEY="/your-path-to-keys/client.key"
export PGSSLROOTCERT="/your-path-to-ca/ca.crt"
pgcli -h localhost -p 5432 -U username postgres

特性

pgcli 是使用 prompt_toolkit 编写的。

  • 在您键入时自动完成SQL关键词以及数据库中的表和列。

  • 使用 Pygments 进行语法高亮。

  • 智能完成(默认开启)会根据上下文提供完成建议。

    • SELECT * FROM <tab> 将只显示表名。

    • SELECT * FROM users WHERE <tab> 将只显示列名。

  • psql 反斜杠命令提供基本支持。

  • 以美观的方式打印表格数据。

配置

首次启动时,将在 ~/.config/pgcli/config 自动创建配置文件。请查看文件本身以了解所有可用选项的说明。

贡献

如果您有兴趣为这个项目做出贡献,首先我想表达我最衷心的感谢。我已经写了一个小文档来描述如何在开发环境中运行这个项目。

https://github.com/dbcli/pgcli/blob/master/DEVELOP.rst

如果您需要帮助,请随时联系我们。* Amjith,pgcli 作者:amjith.r@gmail.com,Twitter: @amjithr * Irina,pgcli 维护者:i.chernyavska@gmail.com,Twitter: @irinatruong

详细安装说明

macOS

安装 pgcli 最简单的方法是使用 Homebrew。

$ brew install pgcli

完成!

或者,您可以使用名为 pip 的包管理器将 pgcli 作为Python包安装。您需要在系统上安装PostgreSQL才能使其工作。

关于 pip 的详细入门指南 - https://pip.pythonlang.cn/en/latest/installing.html

$ which pip

如果已安装,则可以执行以下操作

$ pip install pgcli

如果由于权限问题失败,您可能需要以 sudo 权限运行该命令。

$ sudo pip install pgcli

如果未安装 pip,请检查系统上是否有 easy_install。

$ which easy_install

$ sudo easy_install pgcli

Linux

关于 pip 的详细入门指南 - https://pip.pythonlang.cn/en/latest/installing.html

检查系统上是否已安装 pip。

$ which pip

如果不存在,请使用您的 Linux 软件包管理器安装 pip。这可能看起来像这样

$ sudo apt-get install python-pip   # Debian, Ubuntu, Mint etc

or

$ sudo yum install python-pip  # RHEL, Centos, Fedora etc

pgcli 需要 python-dev、libpq-dev 和 libevent-dev 软件包。您可以通过操作系统的软件包管理器安装这些软件包。

$ sudo apt-get install python-dev libpq-dev libevent-dev

or

$ sudo yum install python-devel postgresql-devel

然后您可以安装 pgcli

$ sudo pip install pgcli

Docker

Pgcli 可以在 Docker 中运行。这可以用于在不安装 pgcli 或任何依赖项的情况下尝试 pgcli。

要构建镜像

$ docker build -t pgcli .

要从镜像创建容器

$ docker run --rm -ti pgcli pgcli <ARGS>

要访问在 localhost 上监听的 PostgreSQL 数据库,请确保以“主机网络模式”运行 Docker。例如,要访问在 localhost:5432(标准端口)上运行的名为“foo”的数据库

$ docker run --rm -ti --net host pgcli pgcli -h localhost foo

要通过Unix套接字连接到本地运行的实例,请将套接字绑定到Docker容器

$ docker run --rm -ti -v /var/run/postgres:/var/run/postgres pgcli pgcli foo

IPython

Pgcli可以在IPython控制台中运行。在处理查询时,在不离开IPython控制台的情况下进入pgcli会话可能很有用,迭代查询后退出pgcli,然后在IPython工作区中找到查询结果。

假设您已安装IPython

$ pip install ipython-sql

然后,运行ipython并加载pgcli.magic扩展

$ ipython

In [1]: %load_ext pgcli.magic

连接到数据库并构建一个查询

In [2]: %pgcli postgres://someone@localhost:5432/world
Connected: someone@world
someone@localhost:world> select * from city c where countrycode = 'USA' and population > 1000000;
+------+--------------+---------------+--------------+--------------+
| id   | name         | countrycode   | district     | population   |
|------+--------------+---------------+--------------+--------------|
| 3793 | New York     | USA           | New York     | 8008278      |
| 3794 | Los Angeles  | USA           | California   | 3694820      |
| 3795 | Chicago      | USA           | Illinois     | 2896016      |
| 3796 | Houston      | USA           | Texas        | 1953631      |
| 3797 | Philadelphia | USA           | Pennsylvania | 1517550      |
| 3798 | Phoenix      | USA           | Arizona      | 1321045      |
| 3799 | San Diego    | USA           | California   | 1223400      |
| 3800 | Dallas       | USA           | Texas        | 1188580      |
| 3801 | San Antonio  | USA           | Texas        | 1144646      |
+------+--------------+---------------+--------------+--------------+
SELECT 9
Time: 0.003s

使用Ctrl + D退出pgcli会话并找到查询结果

someone@localhost:world>
Goodbye!
9 rows affected.
Out[2]:
[(3793, u'New York', u'USA', u'New York', 8008278),
 (3794, u'Los Angeles', u'USA', u'California', 3694820),
 (3795, u'Chicago', u'USA', u'Illinois', 2896016),
 (3796, u'Houston', u'USA', u'Texas', 1953631),
 (3797, u'Philadelphia', u'USA', u'Pennsylvania', 1517550),
 (3798, u'Phoenix', u'USA', u'Arizona', 1321045),
 (3799, u'San Diego', u'USA', u'California', 1223400),
 (3800, u'Dallas', u'USA', u'Texas', 1188580),
 (3801, u'San Antonio', u'USA', u'Texas', 1144646)]

结果可用特殊局部变量_,可以将其分配给您选择的变量

In [3]: my_result = _

Pgcli自4.0.0版本开始不再支持Python<3.8。如果您需要它,请安装pgcli <= 4.0.0

谢谢

特别感谢Jonathan Slenders创建了Python Prompt Toolkit,这是一个字面意义上的骨干库,使得这个应用程序成为可能。Jonathan在应用程序开发期间也提供了宝贵的反馈和支持。

Click用于命令行选项解析和打印错误消息。

感谢psycopg为Postgres数据库提供了一个可靠的接口。

感谢所有beta测试者和贡献者花费的时间和耐心。 :)

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

pgcli-4.1.0.tar.gz (145.2 kB 查看哈希值)

上传时间

构建分发

pgcli-4.1.0-py3-none-any.whl (84.7 kB 查看哈希值)

上传于 Python 3

由以下支持