Skip to main content

Python package for working with databases in Docker containers

Project description

Docker-DB

A Python library for managing containerized databases through Docker. This library provides a simple interface for creating, configuring, and managing database containers for development and testing environments, from within python.

Features

The following features are supported:

  • Easy setup and management of database containers
  • Automated container lifecycle management
  • Standardized configuration interfaces
  • Connection management and health checking
  • Volume persistence capabilities
  • Initialization script support

The following features are implemented but not tested:

  • Enable/Disable error if already created
  • startdb
  • restartdb
  • init scripts to examples

The following databases are supported:

  • MongoDB
  • Microsoft SQL Server
  • PostgreSQL
  • MySQL

These databases might be added in the future:

  • Cassandra

Installation

pip install py-dockerdb

Requirements

  • Python 3.7+
  • Docker installed and running
  • Database-specific Python drivers:
    • pymongo for MongoDB
    • pyodbc for Microsoft SQL Server
    • psycopg2 for PostgreSQL
    • mysql-connector-python for MySQL

Basic Usage

Check out the following usage examples:

MongoDB Example

from docker_db.mongodb import MongoDBConfig, MongoDB

# Create configuration
config = MongoDBConfig(
    user="testuser",
    password="testpass",
    database="testdb",
    root_username="admin",
    root_password="adminpass",
    container_name="test-mongodb"
)

# Create and start MongoDB container
db = MongoDB(config)
db.create_db()

# Connect to database
client = db.connection
# Use the database...

# Stop the container when done
db.stop_db()

# Completely remove the container
db.delete_db()

PostgreSQL Example

from docker_db.postgres import PostgresConfig, PostgresDB

# Create configuration
config = PostgresConfig(
    user="testuser",
    password="testpass",
    database="testdb",
    container_name="test-postgres"
)

# Create and start PostgreSQL container
db = PostgresDB(config)
db.create_db()

# Connect to the database
conn = db.connection

# Create a cursor and execute a query
cursor = conn.cursor()
cursor.execute("SELECT version();")
version = cursor.fetchone()
print(f"PostgreSQL version: {version[0]}")

# Clean up
cursor.close()
db.stop_db()

Working with Initialization Scripts

All database managers support initialization scripts that can be executed when the container is created:

from pathlib import Path
from docker_db.mongodb import MongoDBConfig, MongoDB

config = MongoDBConfig(
    user="testuser",
    password="testpass",
    database="testdb",
    root_username="admin",
    root_password="adminpass",
    container_name="test-mongodb",
    init_script=Path("./path/to/init_script.js")
)

Custom Volume Paths

You can specify custom volume paths to persist data between container restarts:

from pathlib import Path
from docker_db.mssql import MSSQLConfig, MSSQLDB

config = MSSQLConfig(
    user="testuser",
    password="testpass",
    database="testdb",
    sa_password="StrongPassword123!",
    container_name="test-mssql",
    volume_path=Path("./data/mssql")
)

License

This project is licensed under the MIT License - see the LICENSE file 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

py_dockerdb-0.5.0.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

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

py_dockerdb-0.5.0-py3-none-any.whl (27.7 kB view details)

Uploaded Python 3

File details

Details for the file py_dockerdb-0.5.0.tar.gz.

File metadata

  • Download URL: py_dockerdb-0.5.0.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for py_dockerdb-0.5.0.tar.gz
Algorithm Hash digest
SHA256 12260d29ee2a0a6c1143dcaf917a76b852322062bb8156c3841d581e1f12d504
MD5 feca2e9e2f3318c10475ad6037434fd0
BLAKE2b-256 698d9b0bb1d178d3b6f2f410d71d433047831bcc6da064e41b9a8d0abe83bf59

See more details on using hashes here.

File details

Details for the file py_dockerdb-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: py_dockerdb-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 27.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.10

File hashes

Hashes for py_dockerdb-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ccedce9e75fb380d04fbdfe164db63e03a32708e6394edcfe62e481abfc28b59
MD5 201e8bc1f9d16c01e0fb45d3267071e4
BLAKE2b-256 d10715b4464b3f01b27b9149f2f3318848e8b2d0915ae9efb70ecf3e8714f30f

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