one-table


Nameone-table JSON
Version 1.0.23 PyPI version JSON
download
home_pageNone
SummaryPython dynamoDB one table
upload_time2024-08-28 04:41:34
maintainerNone
docs_urlNone
authorGerswin Pineda
requires_pythonNone
licenseNone
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"
}
        
Elapsed time: 0.32024s