Skip to main content

A simple sqlalchemy connection configuration manager

Project description

db_hooks

Extremely beta sqlalchemy and toml based sql connection manager.

config file

db_hooks looks for a local config file at ./.databases.toml in your working directory and then looks for a global config file using the appdirs library. Right now there isn't an obvious way to find this path, but running db_hooks list will bomb with a useful error message if the file isn't there. In general, try these locations:

os location
linux ~/.local/share/db_hooks/databases.toml
osx ~/Library/Application Support/db_hooks/databases.toml
windows 10 ~\AppData\local\jfhbrook\db_hooks

Keys in the TOML file are connection names. Under those are key/value pairs for the various parameters in a connection. Connections support the following parameters:

  • connection - a sqlalchemy-compatible connstring. May have a {password} f-string parameter.
  • password_cmd - a bash command that will be executed in order to fetch the password, which will be applied to connection as an f-string.

In general, one would use password_cmd to write a small snippet that fetches the password. This is designed to allow the most flexibility and therefore will depend on your needs.

For example, you may have a local postgres account and want to read the password using zenity:

[pg_example]
connection = "postgresql+psycopg2://josh:{password}@localhost:5432/josh"
password_cmd = "zenity --password"

in your code

Once you have a connection configured, you can load a sqlalchemy engine using the get_engine API:

from db_hooks import get_engine

engine = get_engine('pg_example')

This will pull the connection, run your password_cmd and give you a configured sqlalchemy engine.

Note that get_engine is cached with a cachetools.TTLCache configured with a ttl of 10 minutes.

the cli

db_hooks exposes a CLI that will launch either psql or mysql in a manner appropriate to the underlying connection. You can run db_hooks --help for hopefully useful help output.

licensing

This library is licensed under the Apache Software License. See the LICENSE and NOTICE files for details.

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

db_hooks-0.0.6.tar.gz (4.7 kB view hashes)

Uploaded Source

Built Distribution

db_hooks-0.0.6-py2.py3-none-any.whl (10.3 kB view hashes)

Uploaded Python 2 Python 3

Supported by

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