Skip to content
main
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ddb-local

Python wrapper for DynamoDB Local.

What is it for?

This is a convenient Python wrapper for DynamoDB Local. All the instructions online currently involves manually downloading the tarball and installing it, which is a huge hassle and is a barrier to automation. It wasn't really easy to integrate the local DDB nicely into tests (e.g., pytest) so I wrote this library.

Prerequisite

You must have java in PATH or specify JAVA_HOME. You need a working Internet connection to download DynamoDBLocal tarball. Optionally, you can get it yourself, and point unpack_dir to the root of the unpacked directory.

Examples

Get a throwaway in-memory DDB for testing:

import boto3
from ddb_local import create_new_inmemory_ddb

with create_new_inmemory_ddb() as local_ddb:
    ddb = boto3.client('dynamodb', endpoint_url=local_ddb.endpoint)

Use it in a context manager:

import boto3
from ddb_local import LocalDynamoDB

with LocalDynamoDB() as local_ddb:
    ddb = boto3.client('dynamodb', endpoint_url=local_ddb.endpoint)

Outside a context manager, you can also call start() and stop() manually. In this case, it's your responsibility to make sure stop() is called.

from ddb_local import LocalDynamoDB

db = LocalDynamoDB()
db.start()
print(f"Endpoint is at {db.endpoint}")
db.stop()

Example usage with pytest:

import pytest
from ddb_local import LocalDynamoDB

@pytest.fixture
def local_ddb():
    with LocalDynamoDB():
        yield ddb

def test_with_local_ddb(local_ddb):
    ddb = boto3.client('dynamodb', endpoint_url=local_ddb.endpoint)
    # ...

Troubleshooting with debug flag:

from ddb_local import LocalDynamoDB

db = LocalDynamoDB(debug=True)
db.start()
# expect stderr/out from DynamoDbLocal
db.stop()

Development

  • make to run test, coverage and distribution build.
  • make coverage to run coverage.
  • make test to run test.
  • pytest to run test.
  • make clean to delete all files.
  • make upload to upload to PyPI.
  • Populate .pypirc with the API token.

Support

Support is provided on a best-effort basis.

Create an issue in the Github repo.

About

Python wrapper for DynamoDB Local

Resources

License

Stars

Watchers

Forks

Packages

No packages published