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
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 Distributions
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 150cc5f8722ca4f7ab2a8d92a864ab3a74933d2811c9df60adb3af24f7032e5f |
|
MD5 | 9fbcfbafa64049a1035fa4cf081716a7 |
|
BLAKE2b-256 | 9b039400a2ec2223bb15c0384a52ef01f467ad6a227b272caec760b10d622740 |