Name | one-table JSON |
Version |
1.0.23
JSON |
| download |
home_page | None |
Summary | Python dynamoDB one table |
upload_time | 2024-08-28 04:41:34 |
maintainer | None |
docs_url | None |
author | Gerswin Pineda |
requires_python | None |
license | None |
keywords |
python
dynamodb
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# 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:
```python
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
```python
new_user = table.create('User', {
'id': '12345',
'name': 'John Doe',
'email': 'john@example.com'
})
print(new_user)
```
### Actualizar un item existente
```python
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
```python
updated_user = table.update_if_different('User', {
'id': '12345',
'name': 'John Doe',
'email': 'john.new@example.com'
})
print(updated_user)
```
### Buscar items
```python
# 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
```python
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:
```python
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:
```python
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:
```python
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!
Raw data
{
"_id": null,
"home_page": null,
"name": "one-table",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "python, dynamodb",
"author": "Gerswin Pineda",
"author_email": "g3rswin@gmail.com",
"download_url": null,
"platform": null,
"description": "# one_table\n\n`one_table` es una librer\u00eda Python que simplifica las operaciones con DynamoDB, proporcionando una capa de abstracci\u00f3n intuitiva y potente sobre el SDK de boto3 para DynamoDB. Esta librer\u00eda est\u00e1 dise\u00f1ada para facilitar el modelado de datos, las consultas y las operaciones CRUD en DynamoDB, permitiendo a los desarrolladores centrarse en la l\u00f3gica de negocio en lugar de en los detalles de implementaci\u00f3n de DynamoDB.\n\n## Caracter\u00edsticas principales\n\n- Modelado de datos sencillo con esquemas definidos en Python\n- Operaciones CRUD simplificadas\n- Soporte para \u00edndices secundarios globales (GSI)\n- Consultas flexibles con soporte para filtros y condiciones\n- Operaciones condicionales para garantizar la integridad de los datos\n- Soporte para JSON API\n- Cach\u00e9 integrado para mejorar el rendimiento\n\n## Instalaci\u00f3n\n\nPuedes instalar `one_table` usando pip:\n\n```\npip install one_table\n```\n\n## Uso b\u00e1sico\n\n### Configuraci\u00f3n inicial\n\nPrimero, necesitas configurar tu tabla de DynamoDB:\n\n```python\nimport boto3\nfrom one_table import Table\n\n# Configurar el cliente de DynamoDB\ndynamodb = boto3.resource('dynamodb')\n\n# Definir el esquema de la tabla\nschema = {\n 'version': '0.0.1',\n 'indexes': {\n 'primary': {'hash': 'pk', 'sort': 'sk'},\n 'GSI1': {'hash': '_type', 'sort': 'createdAt'}\n },\n 'models': {\n 'User': {\n 'pk': {'type': 'string', 'value': 'USER#{id}'},\n 'sk': {'type': 'string', 'value': 'PROFILE'},\n 'id': {'type': 'string', 'required': True},\n 'name': {'type': 'string', 'required': True},\n 'email': {'type': 'string', 'required': True}\n }\n }\n}\n\n# Crear la instancia de Table\ntable = Table({\n 'name': 'MyTable',\n 'schema': schema,\n 'client': dynamodb\n})\n```\n\n### Crear un nuevo item\n\n```python\nnew_user = table.create('User', {\n 'id': '12345',\n 'name': 'John Doe',\n 'email': 'john@example.com'\n})\nprint(new_user)\n```\n\n### Actualizar un item existente\n\n```python\nupdated_user = table.update('User', {\n 'id': '12345',\n 'name': 'John Updated Doe',\n 'email': 'john.updated@example.com'\n})\nprint(updated_user)\n```\n\n### Actualizar un item solo si los valores son diferentes\n\n```python\nupdated_user = table.update_if_different('User', {\n 'id': '12345',\n 'name': 'John Doe',\n 'email': 'john.new@example.com'\n})\nprint(updated_user)\n```\n\n### Buscar items\n\n```python\n# Buscar por clave primaria\nuser = table.find('User', {\n 'pk': 'USER#12345',\n 'sk': 'PROFILE'\n})\n\n# Buscar usando un \u00edndice secundario global\nusers = table.find_by_gsi('GSI1', 'User', {\n '_type': 'User',\n 'createdAt': {'begins_with': '2023'}\n})\n\n# Buscar con filtros adicionales\nfiltered_users = table.find('User', {\n 'pk': 'USER#',\n 'sk': {'begins_with': 'PROFILE'},\n 'filter': [\n {'name': {'begins_with': 'John'}},\n {'email': {'ends_with': '@example.com'}}\n ]\n})\n```\n\n### Eliminar un item\n\n```python\ntable.delete({\n 'pk': 'USER#12345',\n 'sk': 'PROFILE'\n})\n```\n\n## Caracter\u00edsticas avanzadas\n\n### Cach\u00e9\n\n`one_table` incluye un sistema de cach\u00e9 integrado para mejorar el rendimiento de las consultas frecuentes:\n\n```python\ntable = Table({\n 'name': 'MyTable',\n 'schema': schema,\n 'client': dynamodb,\n 'cache': True,\n 'cacheTTLSeg': 300, # Tiempo de vida del cach\u00e9 en segundos\n 'cachePath': './cache' # Directorio para almacenar el cach\u00e9\n})\n```\n\n### Modo de depuraci\u00f3n\n\nPuedes activar el modo de depuraci\u00f3n para obtener m\u00e1s informaci\u00f3n sobre las operaciones realizadas:\n\n```python\ntable = Table({\n 'name': 'MyTable',\n 'schema': schema,\n 'client': dynamodb,\n 'debug': True\n})\n```\n\n### Soporte para JSON API\n\n`one_table` puede formatear las respuestas seg\u00fan las especificaciones de JSON API:\n\n```python\ntable = Table({\n 'name': 'MyTable',\n 'schema': schema,\n 'client': dynamodb,\n 'jsonApi': True\n})\n```\n\n## Conclusi\u00f3n\n\n`one_table` simplifica significativamente el trabajo con DynamoDB en Python, proporcionando una API intuitiva y potente. Ya sea que est\u00e9s construyendo una aplicaci\u00f3n peque\u00f1a o un sistema a gran escala, `one_table` te ayudar\u00e1 a interactuar con DynamoDB de manera eficiente y efectiva.\n\nPara m\u00e1s informaci\u00f3n, consulta la documentaci\u00f3n completa en [link a tu documentaci\u00f3n].\n\n\u00a1Esperamos que disfrutes usando `one_table` en tus proyectos!\n",
"bugtrack_url": null,
"license": null,
"summary": "Python dynamoDB one table",
"version": "1.0.23",
"project_urls": null,
"split_keywords": [
"python",
" dynamodb"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "9b039400a2ec2223bb15c0384a52ef01f467ad6a227b272caec760b10d622740",
"md5": "9fbcfbafa64049a1035fa4cf081716a7",
"sha256": "150cc5f8722ca4f7ab2a8d92a864ab3a74933d2811c9df60adb3af24f7032e5f"
},
"downloads": -1,
"filename": "one_table-1.0.23-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9fbcfbafa64049a1035fa4cf081716a7",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 7088,
"upload_time": "2024-08-28T04:41:34",
"upload_time_iso_8601": "2024-08-28T04:41:34.604263Z",
"url": "https://files.pythonhosted.org/packages/9b/03/9400a2ec2223bb15c0384a52ef01f467ad6a227b272caec760b10d622740/one_table-1.0.23-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-28 04:41:34",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "one-table"
}