Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Generación automática de un modelo de PynamoDB y funciones CRUD para Amazon DynamoDB mediante una aplicación de Python
Vijit Vashishtha, Dheeraj Alimchandani y Dhananjay Karanjkar, Amazon Web Services
Resumen
Es habitual que se requieran entidades y funciones de operaciones de creación, lectura, actualización y eliminación (CRUD) para realizar operaciones de base de datos de Amazon DynamoDB. PynamoDB es una interfaz basada en Python que admite Python 3. También ofrece características como la compatibilidad con las transacciones de Amazon DynamoDB, la serialización y deserialización automáticas de los valores de los atributos y la compatibilidad con los marcos de trabajo más comunes de Python, como Flask y Django. Este patrón permite a los desarrolladores trabajar con Python y DynamoDB, ya que proporciona una biblioteca que facilita la creación automática de modelos de PynamoDB y funciones de operación CRUD. Si bien genera funciones CRUD esenciales para las tablas de bases de datos, también puede aplicar ingeniería inversa a los modelos de PynamoDB y a las funciones CRUD de las tablas de Amazon DynamoDB. Este patrón está diseñado para simplificar las operaciones de la base de datos mediante una aplicación basada en Python.
Estas son algunas de las características principales de la solución:
Esquema JSON a modelo PynamoDB: genere automáticamente modelos de PynamoDB en Python mediante la importación de un archivo de esquema JSON.
Generación de funciones CRUD: genere automáticamente funciones para realizar operaciones CRUD en tablas de DynamoDB.
Ingeniería inversa desde DynamoDB: utilice la asignación relacional de objetos (ORM) de PynamoDB para aplicar ingeniería inversa a los modelos de PynamoDB y a las funciones CRUD de las tablas de Amazon DynamoDB existentes.
Requisitos previos y limitaciones
Requisitos previos
Un activo Cuenta de AWS
La versión 3.8 o posterior de Python descargada
e instalada La versión 3.1.2 o posterior de Jinja2 descargada
e instalada Tablas de Amazon DynamoDB para las que desea generar ORM
AWS Command Line Interface (AWS CLI), instalado y configurado
La versión 5.4.1 o posterior de PynamoDB instalada
Arquitectura
Pila de tecnología de destino
script de JSON
aplicación de Python
modelo de PynamoDB
instancia de base de datos de Amazon DynamoDB
Arquitectura de destino

Debe crear un archivo de esquema JSON de entrada. Este archivo de esquema JSON representa los atributos de las tablas de DynamoDB respectivas a partir de las que desea crear modelos de PyNamoDB y para las que desea crear funciones CRUD. Contiene estas tres claves importantes:
name: el nombre de la tabla de destino de DynamoDB.region— El Región de AWS lugar donde está alojada la tablaattributes: atributos que forman parte de la tabla de destino, como la clave de partición (también conocida como atributo hash), la clave de clasificación, los índices secundarios locales, los índices secundarios globales y cualquier atributo que no sea clave. Esta herramienta espera que el esquema de entrada solo proporcione atributos que no sean clave, ya que la aplicación los obtiene directamente de la tabla de destino. Para ver un ejemplo de cómo especificar atributos en el archivo de esquema JSON, consulte la sección Información adicional de este patrón.
Ejecute la aplicación Python y proporcione el archivo de esquema JSON como entrada.
La aplicación Python lee el archivo de esquema JSON.
La aplicación Python se conecta a las tablas de DynamoDB para derivar el esquema y los tipos de datos. La aplicación ejecuta la operación describe_table
y obtiene los atributos clave y de índice de la tabla. La aplicación Python combina los atributos del archivo de esquema JSON y la tabla de DynamoDB. Utiliza el motor de plantillas de Jinja para generar un modelo de PynamoDB y las funciones CRUD correspondientes.
Puede acceder al modelo de PynamoDB para realizar operaciones CRUD en la tabla de DynamoDB.
Tools (Herramientas)
Servicios de AWS
Amazon DynamoDB es un servicio de base de datos de NoSQL completamente administrado que ofrece un rendimiento rápido, predecible y escalable.
Otras herramientas
Jinja
es un motor de plantillas extensible que compila plantillas en código Python optimizado. Este patrón usa Jinja para generar contenido dinámico al incrustar marcadores de posición y lógica en las plantillas. PynamoDB
es una interfaz basada en Python para Amazon DynamoDB. Python
es un lenguaje de programación informático de uso general.
Repositorio de código
El código de este patrón está disponible en el repositorio de funciones CRUD y modelos de PynamoDB de GitHub generación automática
Paquete de controladores
El paquete Python de controladores contiene la lógica de aplicación principal que ayuda a generar el modelo de PynamoDB y las funciones CRUD. Contiene lo siguiente:
input_json_validator.py: este script de Python valida el archivo de esquema JSON de entrada y crea los objetos Python que contienen la lista de tablas de DynamoDB de destino y los atributos necesarios para cada uno.dynamo_connection.py: este script establece una conexión con la tabla de DynamoDB y utiliza la operacióndescribe_tablepara extraer los atributos necesarios para crear el modelo de PynamoDB.generate_model.py: este script contiene una clase de PythonGenerateModelque crea el modelo de PynamoDB en función del archivo de esquema JSON de entrada y de la operacióndescribe_table.generate_crud.py: para las tablas de DynamoDB que se definen en el archivo de esquema JSON, este script utiliza la operaciónGenerateCrudpara crear las clases de Python.
Plantillas
Este directorio de Python contiene las siguientes plantillas de Jinja:
model.jinja: esta plantilla de Jinja contiene la expresión de plantilla para generar el script de modelo de PynamoDB.crud.jinja: esta plantilla de Jinja contiene la expresión de plantilla para generar el script de funciones CRUD.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clonar el repositorio. | Introduzca el comando siguiente para clonar el repositorio Generación automática de modelos de PynamoDB y funciones CRUD
| Desarrollador de aplicaciones |
Configure el entorno de Python. |
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Modifique el archivo de esquema JSON. |
| Desarrollador de aplicaciones |
Ejecute la aplicación Python. | Introduzca el siguiente comando para generar los modelos de PynamoDB y las funciones CRUD, donde
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Compruebe el modelo de PynamoDB generado. |
| Desarrollador de aplicaciones |
Verifique las funciones CRUD generadas. |
| Desarrollador de aplicaciones |
Recursos relacionados
Componentes básicos de Amazon DynamoDB (documentación de DynamoDB)
Mejora del acceso con índices secundarios (documentación de DynamoDB)
Información adicional
Ejemplos de atributos para el archivo de esquema JSON
[ { "name": "test_table", "region": "ap-south-1", "attributes": [ { "name": "id", "type": "UnicodeAttribute" }, { "name": "name", "type": "UnicodeAttribute" }, { "name": "age", "type": "NumberAttribute" } ] } ]