Skip to main content

No project description provided

Project description

PG Docker

A python package to provide containerized postgres databases in python

Why would you need this?

If you are using postgres and want to write tests that run against a real database, then this will make your life easier.

Installation

Install via pip:

pip install pg-docker

You will also need to have docker.

Usage

Note: This package is mainly built with pytest in mind, but you can use the context managers documented below with other testing frameworks as well.

Example

With pytest:

import psycopg2


pytest_plugins = ["pg_docker"]


def test_using_a_database(pg_database):
    db_connection = psycopg2.connect(**pg_database.connection_kwargs())
    cursor = db_connection.cursor()
    cursor.execute("SELECT 'hello world!'")

    assert cursor.fetchone() == ("hello world!",)

Usage with pytest

You first need to enable the plugin. To do this add a conftest.py to the root directory of your tests and add:

pytest_plugins = ["pg_docker"]

You can find more details on how to activate plugins in the pytest docs

The plugin The following fixtures:

  • pg_database: DatabaseParams for a clean database.
  • pg_database_pool: A DatabasePool instance. Use this if you need more than one database in your tests at a time.

Configuring Database Migrations

Use the below template in your conftest.py to configure how your databases are set up.

def setup_db(pg_params):
    """Add any setup logic for your database in here."""
    pass

@pytest.fixture(scope="session")
def pg_setup_db():
    return setup_db

Note: You might be inclined to edit the above code to nest the setup_db function inside of the fixture function. This will not work, because the fixture result needs to be pickleable!

Advanced Usage (and other testing frameworks)

For other use cases you can use the database_pool context manager:

with database_pool() as db_pool:
    with db_pool.database as db_params:
        connection = psycopg2.connect(**db_params.connection_kwargs())

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

pg_docker-0.11.0.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

pg_docker-0.11.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file pg_docker-0.11.0.tar.gz.

File metadata

  • Download URL: pg_docker-0.11.0.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.11.0 Darwin/22.3.0

File hashes

Hashes for pg_docker-0.11.0.tar.gz
Algorithm Hash digest
SHA256 424ed2d09f8b69c80a60caed0327dae6cc5334c6bb1253db5ca28938894310b7
MD5 4cd2ff3715f4a50e97cc64c1c26894e1
BLAKE2b-256 90e145e50af9dd70bb5e34d4680a5c97c84b0b4e86424334951a22860f424156

See more details on using hashes here.

File details

Details for the file pg_docker-0.11.0-py3-none-any.whl.

File metadata

  • Download URL: pg_docker-0.11.0-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.11.0 Darwin/22.3.0

File hashes

Hashes for pg_docker-0.11.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b47e88cfc6f7dbaa4ed8bf081e861b3f44d4dc341dabd943fdad2e2c43a0cccf
MD5 925f9a19c26bd151074171f6ee47a12a
BLAKE2b-256 081f4d31789838ee01536e91831248ce2447d2499db43650c939a59ccb0c21cd

See more details on using hashes here.

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