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
Hashes for one_table-1.0.23-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 150cc5f8722ca4f7ab2a8d92a864ab3a74933d2811c9df60adb3af24f7032e5f |
|
MD5 | 9fbcfbafa64049a1035fa4cf081716a7 |
|
BLAKE2b-256 | 9b039400a2ec2223bb15c0384a52ef01f467ad6a227b272caec760b10d622740 |