Skip to content

materialize command line interface with autocompletion

License

Notifications You must be signed in to change notification settings

quodlibetor/mzcli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A REPL for the Materialize Streaming Database Engine

See https://materialize.io for an introduction to Materialize.

Quick Start

The easiest way to get started with mzcli with a remote materialized is to use docker:

docker run -it materialize/mzcli mzcli --help

Or you can install mzcli using pip or pipx (recommended):

pipx install mzcli

This is a work-in-progress materialize client that does auto-completion and syntax highlighting. It is a soft fork of pgcli, and will hopefully one day be even less of a fork from mzcli, but due to materialize's extra functionality this will be a long-lived tool for interacting with materialized.

screenshots/mzcli.gif

screenshots/image01.png

Finding the Latest Version

New releases of mzcli are automatically built from main and published to Docker Hub.

Usage

$ mzcli [database_name]

or

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

Examples:

$ mzcli local_database

$ mzcli postgres://amjith:[email protected]:5432/app_db?sslmode=verify-ca&sslrootcert=/myrootcert

For more details:

$ mzcli --help

Usage: mzcli [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 mzcli.
  -d, --dbname TEXT       database name to connect to.
  --mzclirc PATH          Location of mzclirc file.
  -D, --dsn TEXT          Use DSN configured into the [alias_dsn] section of
                          mzclirc file.
  --list-dsn              list of DSN configured into the [alias_dsn] section
                          of mzclirc 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 / --no-warn      Warn before running a destructive query.
  --help                  Show this message and exit.

mzcli also supports many of the same environment variables as psql for login options (e.g. PGHOST, PGPORT, PGUSER, PGPASSWORD, PGDATABASE).

Features

The mzcli is written using prompt_toolkit.

  • Auto-completes as you type for SQL keywords as well as tables 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.
  • Primitive support for psql back-slash commands.

  • Pretty prints tabular data.

Config

A config file is automatically created at ~/.config/mzcli/config at first launch. See the file itself for a description of all available options.

Contributions:

While we are not mzcli, the following documentation expresses our sentiments and still correctly represents the development workflow.

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/mzcli/blob/master/DEVELOP.rst

Please feel free to file an issue if you need help, or jump in our community slack.

About

materialize command line interface with autocompletion

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.2%
  • Gherkin 1.2%
  • Other 0.6%