Skip to main content

A PyMongo-like wrapper for DynamoDB

Project description

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")

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

dynamo_wrapper-0.1.1.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

dynamo_wrapper-0.1.1-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file dynamo_wrapper-0.1.1.tar.gz.

File metadata

  • Download URL: dynamo_wrapper-0.1.1.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.11

File hashes

Hashes for dynamo_wrapper-0.1.1.tar.gz
Algorithm Hash digest
SHA256 71102a8b54f6530052ce3c4fed2db938aae226c9a9fc9bb0792d9e26136149a1
MD5 ce846a3fe0c7fba292069fb4f7eba31c
BLAKE2b-256 b5e4a7abb9272d58144a19c228dc41aaa2e6a9d74e5ae1027d2b41d68fe46409

See more details on using hashes here.

File details

Details for the file dynamo_wrapper-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for dynamo_wrapper-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b194e91cd842f82411c8acb68e51bcf9db4b63416dfd1dbc6d074255420c2bae
MD5 ac75fbf33f12fec6564328720a7740ed
BLAKE2b-256 96461fab637209e11727591de8c3395afe993904d160f18e2fbb931678686113

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