Skip to main content

Python client for MySQL Shell

Project description

MySQL Shell Python client

CI/CD Status Coverage Status Apache license

MySQL Shell is an advanced client for MySQL Server that allow system administrator to perform both cluster and instance level operations, using a single binary.

This project provides a Python client to perform the most common set of operations, in addition to a set of predefined queries to cover most of the common use-cases.

🧑‍💻 Usage

  1. Install MySQL Shell.

  2. Install the package from PyPi:

    pip install mysql-shell-client
    
  3. Import and build the executors:

    from mysql_shell.executors import LocalExecutor
    from mysql_shell.models import ConnectionDetails
    
    cluster_conn = ConnectionDetails(
        username="...",
        password="...",
        host="...",
        port="...",
    )
    instance_conn = ConnectionDetails(
        username="...",
        password="...",
        host="...",
        port="...",
    )
    
    cluster_executor = LocalExecutor(cluster_conn, "mysqlsh")
    instance_executor = LocalExecutor(instance_conn, "mysqlsh")
    
  4. Import and build the query builders [optional]:

    from mysql_shell.builders import CharmLockingQueryBuilder
    
    # This is just an example
    builder = CharmLockingQueryBuilder("mysql", "locking")
    query = builder.build_table_creation_query()
    rows = instance_executor.execute_sql(query)
    
  5. Import and build the clients:

    from mysql_shell.builders.quoting import StringQueryQuoter
    from mysql_shell.clients import MySQLClusterClient, MySQLInstanceClient
    
    quoter = StringQueryQuoter()
    
    cluster_client = MySQLClusterClient(cluster_executor, quoter)
    instance_client = MySQLInstanceClient(instance_executor, quoter)
    

🔧 Development

Dependencies

In order to install all the development packages:

poetry install --all-extras

Linting

All Python files are linted using Ruff, to run it:

tox -e lint

Testing

Project testing is performed using Pytest, to run them:

tox -e unit
export MYSQL_DATABASE="test"
export MYSQL_USERNAME="root"
export MYSQL_PASSWORD="root_pass"
export MYSQL_SHELL_PATH="mysqlsh"

podman-compose -f compose/mysql-8.0.yaml up --detach && tox -e integration
podman-compose -f compose/mysql-8.0.yaml down

Release

Commits can be tagged to create releases of the package, in order to do so:

  1. Bump up the version within the pyproject.toml file.
  2. Add a new section to the CHANGELOG.md.
  3. Commit + push the changes.
  4. Trigger the release workflow.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mysql_shell_client-0.7.1.tar.gz (18.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mysql_shell_client-0.7.1-py3-none-any.whl (26.4 kB view details)

Uploaded Python 3

File details

Details for the file mysql_shell_client-0.7.1.tar.gz.

File metadata

  • Download URL: mysql_shell_client-0.7.1.tar.gz
  • Upload date:
  • Size: 18.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mysql_shell_client-0.7.1.tar.gz
Algorithm Hash digest
SHA256 e5595cd6ec76b2c0d887dccc32c4feb18031afd7f22b5b7222596308052efa44
MD5 d575b266186c9c8d82670c3faeb70d04
BLAKE2b-256 a1aa99a3ee336cfa2f4339924555c5631c91ed11b7495c862ff814d57f4c4c99

See more details on using hashes here.

Provenance

The following attestation bundles were made for mysql_shell_client-0.7.1.tar.gz:

Publisher: release.yaml on canonical/mysql-shell-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mysql_shell_client-0.7.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mysql_shell_client-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0223fde0ad97a132d1ad0c4ba91cb15c1ef1041272c2b74d764a5441f3092562
MD5 57c76abf1d7a8f5dff4d34246b8530a8
BLAKE2b-256 392c7989e8f0f7b405175a020af30a0722aed82fae38d6258d5c31f736cf512b

See more details on using hashes here.

Provenance

The following attestation bundles were made for mysql_shell_client-0.7.1-py3-none-any.whl:

Publisher: release.yaml on canonical/mysql-shell-client

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page