Skip to main content

Python dynamoDB one table

Project description

one_table

one_table es una librería Python que simplifica las operaciones con DynamoDB, proporcionando una capa de abstracción intuitiva y potente sobre el SDK de boto3 para DynamoDB. Esta librería está diseñada para facilitar el modelado de datos, las consultas y las operaciones CRUD en DynamoDB, permitiendo a los desarrolladores centrarse en la lógica de negocio en lugar de en los detalles de implementación de DynamoDB.

Características principales

  • Modelado de datos sencillo con esquemas definidos en Python
  • Operaciones CRUD simplificadas
  • Soporte para índices secundarios globales (GSI)
  • Consultas flexibles con soporte para filtros y condiciones
  • Operaciones condicionales para garantizar la integridad de los datos
  • Soporte para JSON API
  • Caché integrado para mejorar el rendimiento

Instalación

Puedes instalar one_table usando pip:

pip install one_table

Uso básico

Configuración inicial

Primero, necesitas configurar tu tabla de DynamoDB:

import boto3
from one_table import Table

# Configurar el cliente de DynamoDB
dynamodb = boto3.resource('dynamodb')

# Definir el esquema de la tabla
schema = {
    'version': '0.0.1',
    'indexes': {
        'primary': {'hash': 'pk', 'sort': 'sk'},
        'GSI1': {'hash': '_type', 'sort': 'createdAt'}
    },
    'models': {
        'User': {
            'pk': {'type': 'string', 'value': 'USER#{id}'},
            'sk': {'type': 'string', 'value': 'PROFILE'},
            'id': {'type': 'string', 'required': True},
            'name': {'type': 'string', 'required': True},
            'email': {'type': 'string', 'required': True}
        }
    }
}

# Crear la instancia de Table
table = Table({
    'name': 'MyTable',
    'schema': schema,
    'client': dynamodb
})

Crear un nuevo item

new_user = table.create('User', {
    'id': '12345',
    'name': 'John Doe',
    'email': 'john@example.com'
})
print(new_user)

Actualizar un item existente

updated_user = table.update('User', {
    'id': '12345',
    'name': 'John Updated Doe',
    'email': 'john.updated@example.com'
})
print(updated_user)

Actualizar un item solo si los valores son diferentes

updated_user = table.update_if_different('User', {
    'id': '12345',
    'name': 'John Doe',
    'email': 'john.new@example.com'
})
print(updated_user)

Buscar items

# Buscar por clave primaria
user = table.find('User', {
    'pk': 'USER#12345',
    'sk': 'PROFILE'
})

# Buscar usando un índice secundario global
users = table.find_by_gsi('GSI1', 'User', {
    '_type': 'User',
    'createdAt': {'begins_with': '2023'}
})

# Buscar con filtros adicionales
filtered_users = table.find('User', {
    'pk': 'USER#',
    'sk': {'begins_with': 'PROFILE'},
    'filter': [
        {'name': {'begins_with': 'John'}},
        {'email': {'ends_with': '@example.com'}}
    ]
})

Eliminar un item

table.delete({
    'pk': 'USER#12345',
    'sk': 'PROFILE'
})

Características avanzadas

Caché

one_table incluye un sistema de caché integrado para mejorar el rendimiento de las consultas frecuentes:

table = Table({
    'name': 'MyTable',
    'schema': schema,
    'client': dynamodb,
    'cache': True,
    'cacheTTLSeg': 300,  # Tiempo de vida del caché en segundos
    'cachePath': './cache'  # Directorio para almacenar el caché
})

Modo de depuración

Puedes activar el modo de depuración para obtener más información sobre las operaciones realizadas:

table = Table({
    'name': 'MyTable',
    'schema': schema,
    'client': dynamodb,
    'debug': True
})

Soporte para JSON API

one_table puede formatear las respuestas según las especificaciones de JSON API:

table = Table({
    'name': 'MyTable',
    'schema': schema,
    'client': dynamodb,
    'jsonApi': True
})

Conclusión

one_table simplifica significativamente el trabajo con DynamoDB en Python, proporcionando una API intuitiva y potente. Ya sea que estés construyendo una aplicación pequeña o un sistema a gran escala, one_table te ayudará a interactuar con DynamoDB de manera eficiente y efectiva.

Para más información, consulta la documentación completa en [link a tu documentación].

¡Esperamos que disfrutes usando one_table en tus proyectos!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

one_table-1.0.23-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file one_table-1.0.23-py3-none-any.whl.

File metadata

  • Download URL: one_table-1.0.23-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.6

File hashes

Hashes for one_table-1.0.23-py3-none-any.whl
Algorithm Hash digest
SHA256 150cc5f8722ca4f7ab2a8d92a864ab3a74933d2811c9df60adb3af24f7032e5f
MD5 9fbcfbafa64049a1035fa4cf081716a7
BLAKE2b-256 9b039400a2ec2223bb15c0384a52ef01f467ad6a227b272caec760b10d622740

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