Skip to main content

DynamoWrapper

DynamoWrapper is a Python library that provides a PyMongo-like interface for Amazon DynamoDB. It simplifies DynamoDB operations, making them more intuitive for developers familiar with MongoDB.

Features

  • PyMongo-like API for DynamoDB operations
  • Simplified querying with a familiar syntax
  • Easy table access and management
  • Support for basic CRUD operations
  • Index creation and management
  • Batch operations support

Installation

You can install DynamoWrapper using pip: pip install dynamo-wrapper

Quick Start

Here's a simple example to get you started:

from dynamo_wrapper import DynamoClient

# Initialize the client
client = DynamoClient(aws_access_key_id, aws_secret_access_key, region)

# Access a table
table = client['my-table']

# Insert a document
table.insert_one({'id': '1', 'name': 'John Doe', 'age': 30})

# Find documents
results = table.find({'age': ('GT', 25)})

# Update a document
table.update_one({'id': ('EQ', '1')}, {'name': 'Jane Doe'})

# Delete a document
table.delete_one({'id': ('EQ', '1')})

Usage

Initializing the Client

from dynamo_wrapper import DynamoClient

client = DynamoClient(aws_access_key_id, aws_secret_access_key, region)

Accessing a Table

table = client['table-name']

Insert Operations

# Insert one document
table.insert_one({'id': '1', 'name': 'John Doe', 'age': 30})

# Insert multiple documents
table.insert_many([
    {'id': '2', 'name': 'Jane Doe', 'age': 28},
    {'id': '3', 'name': 'Bob Smith', 'age': 35}
])

Find Operations

# Find one document
result = table.find_one({'id': ('EQ', '1')})

# Find multiple documents
results = table.find({'age': ('GT', 25)})

# Find with projection
results = table.find({'age': ('GT', 25)}, projection=['name', 'age'])

# Find with limit
results = table.find({'age': ('GT', 25)}, limit=10)

Update Operations

# Update one document
table.update_one({'id': ('EQ', '1')}, {'name': 'Jane Doe'})

Delete Operations

# Delete one document
table.delete_one({'id': ('EQ', '1')})

Count Operations

# Count documents
count = table.count({'age': ('GT', 25)})

Index Operations

# Create an index
table.create_index('name')

Query Operators

DynamoWrapper supports the following comparison operators:

  • EQ: Equal to
  • NE: Not equal to
  • LT: Less than
  • LTE: Less than or equal to
  • GT: Greater than
  • GTE: Greater than or equal to
  • IN: In a list of values
  • BETWEEN: Between two values

Example:

table.find({'age': ('GT', 25), 'status': ('EQ', 'active')})

Error Handling

DynamoWrapper provides custom exceptions for various error scenarios. Here are some common exceptions:

  • ItemNotFoundError: Raised when an item is not found in the table
  • QueryError: Raised when there's an error in query formation or execution
  • UpdateError: Raised when an update operation fails
  • DeleteError: Raised when a delete operation fails
  • InsertError: Raised when an insert operation fails

Example:

from dynamo_wrapper import ItemNotFoundError

try:
    result = table.find_one({'id': ('EQ', '999')})
except ItemNotFoundError:
    print("Item not found")

Metadata

Release files for dynamo-wrapper 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dynamo-wrapper 0.1.1
File Size Uploaded
dynamo_wrapper-0.1.1.tar.gz 7.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dynamo-wrapper 0.1.1
File Interpreter ABI Platform
dynamo_wrapper-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 13.2 kB

Release files / dynamo_wrapper-0.1.1.tar.gz

Download URL dynamo_wrapper-0.1.1.tar.gz
Size 7.0 kB
Tags Source
SHA-256 checksum
How to use checksums
71102a8b54f6530052ce3c4fed2db938aae226c9a9fc9bb0792d9e26136149a1
BLAKE2b-256 checksum
How to use checksums
b5e4a7abb9272d58144a19c228dc41aaa2e6a9d74e5ae1027d2b41d68fe46409
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.11

Release files / dynamo_wrapper-0.1.1-py3-none-any.whl

Download URL dynamo_wrapper-0.1.1-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b194e91cd842f82411c8acb68e51bcf9db4b63416dfd1dbc6d074255420c2bae
BLAKE2b-256 checksum
How to use checksums
96461fab637209e11727591de8c3395afe993904d160f18e2fbb931678686113
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.11

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page