Skip to main content

Small SQL helper utilities with optional external authsql.py config loading.

Project description

toolssql

Small SQL helper utilities (MySQL-focused) with flexible auth configuration.

Install

pip install toolssql

Auth config loading

This package will try to load CONNECTION_CONFIG and CONNECTION_CONFIG_DEFAULT from an authsql.py module/file in this order:

  1. AUTHSQL_MODULE env var (importable module path, e.g. myapp.authsql)
  2. Import authsql (works when your project root is on sys.path)
  3. AUTHSQL_PATH env var pointing directly to an authsql.py file (supports ~ and $HOME)
  4. Home directory fallbacks:
    • ~/authsql.py
    • ~/.authsql.py
    • ~/.config/authsql.py

Example config:

from typing import Dict, Any
CONNECTION_CONFIG: Dict[str, Any] = {
    'config1':
    {
        'host': 'localhost',
        'user': 'Analyst',
        'password': 'XXXXXXXXXXXXXXXXX',
        'database': 'Playground',
    },
    'config2':
    {
        'host': 'localhost',
        'user': 'Analyst2',
        'password': 'XXXXXXXXXXXXXXXXX',
    },
}

# default connection to be used, if nothing else is specified
CONNECTION_CONFIG_DEFAULT = "config1"

If none are found, it falls back to {} / None.

Important: Do not ship secrets inside this PyPI package. Keep authsql.py outside git.

Usage

from toolssql import MysqlConnect

db = MysqlConnect()  # uses loaded defaults if available
df = db.select_df("SELECT 1 AS one")
print(df)

Or inject config explicitly:

from toolssql import MysqlConnect

cfg = {
  "prod": {"host": "...", "user": "...", "password": "...", "database": "..."}
}
db = MysqlConnect(connection="prod", connection_config=cfg, connection_default="prod")

Retry on transient errors

MysqlFetch and MysqlInsertValues support automatic retries for transient MySQL errors (deadlock, lock timeout, server gone, lost connection).

By default retries are disabled (retry_on_error=0). To enable, pass the number of extra attempts and an optional delay between them:

from toolssql import MysqlFetch

# retry once (2 attempts total) with 10 s delay between them
sql = MysqlFetch("SELECT 1", retry_on_error=1, retry_delay=10)
sql.runsql()
from toolssql import MysqlInsertValues

ins = MysqlInsertValues(
    "my_insert",
    "INSERT INTO t (a, b) VALUES (%s, %s)",
    retry_on_error=2,   # up to 3 attempts total
    retry_delay=5,       # 5 s between retries
)

Non-retryable errors (e.g. syntax error, duplicate key) are never retried.

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

toolssql-0.1.4.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

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

toolssql-0.1.4-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file toolssql-0.1.4.tar.gz.

File metadata

  • Download URL: toolssql-0.1.4.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for toolssql-0.1.4.tar.gz
Algorithm Hash digest
SHA256 f40e0b2ce3f6382cad0b437030ce1a9edf1a41a819a1c88c4e18ae024d01fbdc
MD5 154fcb70fc5cf93d6d9d84e21fc57b22
BLAKE2b-256 9ba156249ee919d84708ec7db0d9c401c6c9eb5b11834ec704eee93a3fdb184b

See more details on using hashes here.

File details

Details for the file toolssql-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: toolssql-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for toolssql-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 cb851ec3dd8a1951b130a6b6d5160cae2a8b3956322da6966e1e8d54a94cbdd3
MD5 50acbd92d7715382765bb8a67b96e926
BLAKE2b-256 20a939a4af4303c38f8a70dd0bf5711cc8034e49c0a59d486a2661a8879122d9

See more details on using hashes here.

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