PyDynamoDB

0.8.2 · active · verified Fri Apr 10

PyDynamoDB is a Python DB API 2.0 (PEP 249) client for Amazon DynamoDB, enabling interaction with DynamoDB using SQL-like syntax. It supports both DML operations via PartiQL and DDL operations through MySQL-like statements, and also provides a SQLAlchemy dialect. The current version is 0.8.2. The library has a consistent release cadence, with several updates in recent months, indicating active maintenance. [1, 6]

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to connect to DynamoDB, create a table using DDL, insert data using PartiQL, and query it. Ensure you have AWS credentials configured (e.g., via environment variables `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_DEFAULT_REGION`) or replace the placeholders. [6]

import os
from pydynamodb import connect

aws_access_key_id = os.environ.get('AWS_ACCESS_KEY_ID', 'YOUR_ACCESS_KEY')
aws_secret_access_key = os.environ.get('AWS_SECRET_ACCESS_KEY', 'YOUR_SECRET_KEY')
region_name = os.environ.get('AWS_DEFAULT_REGION', 'us-east-1')

try:
    # Establish a connection
    conn = connect(
        aws_access_key_id=aws_access_key_id,
        aws_secret_access_key=aws_secret_access_key,
        region_name=region_name
    )

    # Create a cursor object
    cursor = conn.cursor()

    # Execute a DDL statement (MySQL-like syntax)
    cursor.execute("CREATE TABLE IF NOT EXISTS MyTestTable (id STRING HASH KEY, name STRING)")
    print("Table 'MyTestTable' created or already exists.")

    # Execute a DML statement (PartiQL syntax)
    cursor.execute("INSERT INTO MyTestTable VALUE {'id': ?, 'name': ?}", '1', 'Alice')
    print("Inserted item 'Alice'.")

    # Query data
    cursor.execute("SELECT * FROM MyTestTable WHERE id = ?", '1')
    result = cursor.fetchall()
    print(f"Queried result: {result}")

    # Clean up (optional)
    # cursor.execute("DROP TABLE MyTestTable")
    # print("Table 'MyTestTable' dropped.")

    # Close the connection
    cursor.close()
    conn.close()

except Exception as e:
    print(f"An error occurred: {e}")

view raw JSON →