Skip to main content

CNBDBer: Universal DB runner for SQL-like commands across SQLite/MySQL/PostgreSQL/MongoDB

Project description

CNBDBer

Universal DB runner for SQL-like commands across SQLite, MySQL, PostgreSQL, and MongoDB.

Install

  • From PyPI (Python 3.9+):
pip install cnbdber
# optional extras
pip install 'cnbdber[mysql]'
pip install 'cnbdber[postgres]'
pip install 'cnbdber[mongo]'
  • From source (development):
pip install -e .

Config

  • App config: ./.configs/cnbdber.config (auto-created on first run)
  • Logger config: ./.configs/cnblogger.config (auto-created if missing)
  • Logs: ./.logs/

You can override the app config via CNBDBER_CONFIG=/abs/path/to/cnbdber.config. The logger path is read from cnbdber.config and passed directly to CNBLogger.

Usage

Run a one-off command:

cnbdber -c "SELECT * FROM users LIMIT 5;"

Run from a file:

cnbdber --file ./query.sql

Specify a config explicitly:

cnbdber --config ./my-config.json -c "DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;"
  • Library usage (import in Python)

Quick one-liner function:

from cnbdber import cnbdber

# Use default/auto-created config
result = cnbdber("SELECT 1;")
print(result or "")

# Or pass a custom config path
result = cnbdber("SELECT * FROM users LIMIT 5;", "./my-config.json")
print(result or "")

Or use the config loader and backend helpers for finer control:

from typing import Optional
from cnbdber import load_config, get_logger
from cnbdber.core import create_backend, run_command

cfg = load_config()  # or load_config("./my-config.json")
logger = get_logger(cfg.logger_config_path, inline_config=cfg.logger)

backend = create_backend(cfg.target, logger)

# DDL/DML: returns None on success
ddl_result: Optional[str] = run_command(backend, "CREATE TABLE IF NOT EXISTS items(id INTEGER PRIMARY KEY, name TEXT);")

insert_result: Optional[str] = run_command(backend, "INSERT INTO items(name) VALUES ('alpha');")

# SELECT: returns tab-separated text (with header when available)
select_result: Optional[str] = run_command(backend, "SELECT id, name FROM items ORDER BY id;")
print(select_result or "")

To target MySQL/PostgreSQL/MongoDB, set cfg.target via cnbdber.config (see examples below) or construct a dict at runtime and pass it to create_backend.

  • SQL backends (SQLite/MySQL/PostgreSQL): raw SQL is executed as-is.
  • MongoDB: a minimal SQL-to-Mongo translation is supported for simple SELECT/INSERT/UPDATE/DELETE with equality-only WHERE clauses.

Example cnbdber.config

{
  "logger_config_path": "./.configs/cnblogger.config",
  "target": {
    "type": "sqlite",
    "sqlite_path": "./example.db"
  }
}

Switch to MySQL:

{
  "logger_config_path": "./.configs/cnblogger.config",
  "target": {
    "type": "mysql",
    "host": "127.0.0.1",
    "port": 3306,
    "user": "root",
    "password": "",
    "database": "test"
  }
}

License

MIT

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

cnbdber-0.2.0.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

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

cnbdber-0.2.0-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file cnbdber-0.2.0.tar.gz.

File metadata

  • Download URL: cnbdber-0.2.0.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for cnbdber-0.2.0.tar.gz
Algorithm Hash digest
SHA256 29bc22a7dfe3301618818b6889b4533dfe78459baab529df5258d742db376003
MD5 fdeb626c1ef8b5e417be49a15157a3c1
BLAKE2b-256 e66299293687d8f591108282983fcb156070e7bbac9630be2c16d54df8dc447c

See more details on using hashes here.

File details

Details for the file cnbdber-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: cnbdber-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for cnbdber-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2856ede05a87105bc2c74b15318b78d762c936e8aaad07bdfbdf2b52938df1f0
MD5 53fb2a6e9e7d5a8a7131df35923fd5ea
BLAKE2b-256 848594c12be3b7ce91f8d3548bcf97063ab4b7f7a98c2d4abbe58c25635915ec

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