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 toNE: Not equal toLT: Less thanLTE: Less than or equal toGT: Greater thanGTE: Greater than or equal toIN: In a list of valuesBETWEEN: 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 tableQueryError: Raised when there's an error in query formation or executionUpdateError: Raised when an update operation failsDeleteError: Raised when a delete operation failsInsertError: 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71102a8b54f6530052ce3c4fed2db938aae226c9a9fc9bb0792d9e26136149a1
|
|
| MD5 |
ce846a3fe0c7fba292069fb4f7eba31c
|
|
| BLAKE2b-256 |
b5e4a7abb9272d58144a19c228dc41aaa2e6a9d74e5ae1027d2b41d68fe46409
|
File details
Details for the file dynamo_wrapper-0.1.1-py3-none-any.whl.
File metadata
- Download URL: dynamo_wrapper-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b194e91cd842f82411c8acb68e51bcf9db4b63416dfd1dbc6d074255420c2bae
|
|
| MD5 |
ac75fbf33f12fec6564328720a7740ed
|
|
| BLAKE2b-256 |
96461fab637209e11727591de8c3395afe993904d160f18e2fbb931678686113
|