Controlador Amazon QLDB para Python: tutorial de inicio rápido - Amazon Quantum Ledger Database (Amazon QLDB)

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.

Controlador Amazon QLDB para Python: tutorial de inicio rápido

En este tutorial, aprenderá a configurar una aplicación sencilla con la versión más reciente del controlador Amazon QLDB para Python. Esta guía incluye los pasos para instalar el controlador y ejemplos de código cortos de las operaciones básicas de creación, lectura, actualización y eliminación (CRUD, Create, Read, Update and Delete). Para obtener ejemplos más detallados que demuestren estas operaciones en una aplicación de muestra completa, consulte laTutorial de Python.

Requisitos previos

Para comenzar, asegúrese de hacer lo que se muestra a continuación:

  1. Complete laRequisitos previos para el controlador de Python, si aún no lo ha hecho. Esto incluye registrarseAWS, conceder acceso programático para el desarrollo e instalar Python versión 3.6 o posterior.

  2. Crea un libro mayor con el nombrequick-start.

    Para obtener información sobre cómo crear un registro, consulteOperaciones básicas de libros mayores de Amazon QLDB oPaso 1: Crear un nuevo libro mayor en Introducción a la consola.

Paso 1: Configuración del proyecto

En primer lugar, configure el proyecto Python.

nota

Si utiliza un IDE que tiene funciones para automatizar estos pasos de configuración, puede pasar directamente aPaso 2: inicializar el controlador.

  1. Cree una carpeta para la aplicación.

    $ mkdir myproject $ cd myproject
  2. Para instalar el controlador QLDB para Python desde PyPI, introduzca el siguientepip comando.

    $ pip install pyqldb

    Al instalar el controlador también se instalan sus dependencias, incluidos los paquetes Amazon Ion AWS SDK for Python (Boto3)y Amazon.

  3. Cree un nuevo archivo llamado app.py.

    A continuación, añada de forma incremental los ejemplos de código en los siguientes pasos para probar algunas operaciones básicas de CRUD. O bien, puede omitir el step-by-step tutorial y, en su lugar, ejecutar la aplicación completa.

Paso 2: inicializar el controlador

Inicialice una instancia del controlador que se conecta al registro nombradoquick-start. Agregue el código a suapp.py archivo.

from pyqldb.config.retry_config import RetryConfig from pyqldb.driver.qldb_driver import QldbDriver # Configure retry limit to 3 retry_config = RetryConfig(retry_limit=3) # Initialize the driver print("Initializing the driver") qldb_driver = QldbDriver("quick-start", retry_config=retry_config)

Paso 3: crear una tabla y un índice

El ejemplo de código muestra cómo ejecutarCREATE TABLE andCREATE INDEX Declaraciones.

Añada el siguiente código para crear una tabla denominadaPeople y un índice para ellastName campo de esa tabla. Los índices son necesarios para optimizar el rendimiento de las consultas y ayudar a limitar las excepciones optimistas a los conflictos en el control de concurrencia (OCC).

def create_table(transaction_executor): print("Creating a table") transaction_executor.execute_statement("Create TABLE People") def create_index(transaction_executor): print("Creating an index") transaction_executor.execute_statement("CREATE INDEX ON People(lastName)") # Create a table qldb_driver.execute_lambda(lambda executor: create_table(executor)) # Create an index on the table qldb_driver.execute_lambda(lambda executor: create_index(executor))

Paso 4: insertar un documento

El ejemplo de código muestra cómo ejecutar unaINSERT sentencia. QLDB admite el lenguaje de consulta PartiQL (compatible con SQL) y el formato de datos Amazon Ion (superconjunto de JSON).

Añada el siguiente código para insertar un documento en laPeople tabla.

def insert_documents(transaction_executor, arg_1): print("Inserting a document") transaction_executor.execute_statement("INSERT INTO People ?", arg_1) # Insert a document doc_1 = { 'firstName': "John", 'lastName': "Doe", 'age': 32, } qldb_driver.execute_lambda(lambda x: insert_documents(x, doc_1))

En este ejemplo, se utiliza un signo de interrogación (?) como marcador de posición variable para pasar la información del documento a la sentencia. Elexecute_statement método admite valores tanto en los tipos Amazon Ion como en los tipos nativos de Python.

sugerencia

Para insertar varios documentos mediante una solaINSERT sentencia, puede pasar un parámetro de tipo lista a la sentencia de la siguiente manera.

# people is a list transaction_executor.execute_statement("INSERT INTO Person ?", people)

No se incluye el marcador de posición de la variable (?) entre corchetes de doble ángulo (<<...>>) al pasar una lista. En las sentencias PartiQL manuales, los corchetes de doble ángulo indican una colección desordenada conocida como bolsa.

Paso 5: consulta del documento

El ejemplo de código muestra cómo ejecutar unaSELECT sentencia.

Añada el siguiente código que consulta un documento de laPeople tabla.

def read_documents(transaction_executor): print("Querying the table") cursor = transaction_executor.execute_statement("SELECT * FROM People WHERE lastName = ?", 'Doe') for doc in cursor: print(doc["firstName"]) print(doc["lastName"]) print(doc["age"]) # Query the table qldb_driver.execute_lambda(lambda executor: read_documents(executor))

Paso 6: actualice el documento

El ejemplo de código muestra cómo ejecutar unaUPDATE sentencia.

  1. Añada el siguiente código para actualizar un documento de laPeople tabla mediante la actualizaciónage a42.

    def update_documents(transaction_executor, age, lastName): print("Updating the document") transaction_executor.execute_statement("UPDATE People SET age = ? WHERE lastName = ?", age, lastName) # Update the document age = 42 lastName = 'Doe' qldb_driver.execute_lambda(lambda x: update_documents(x, age, lastName))
  2. Vuelva a consultar la tabla para ver el valor actualizado.

    # Query the updated document qldb_driver.execute_lambda(lambda executor: read_documents(executor))
  3. Para ejecutar la aplicación, introduzca el comando que se muestra en el directorio de proyectos.

    $ python app.py

Ejecución de la aplicación completa

El siguiente ejemplo de código es la versión completa de laapp.py aplicación. En lugar de realizar los pasos anteriores de forma individual, también puedes copiar y ejecutar este ejemplo de código de principio a fin. Esta aplicación muestra algunas operaciones básicas de CRUD en el libro mayor denominadoquick-start.

nota

Antes de ejecutar este código, asegúrese de que no tiene ya ninguna tabla activa nombradaPeople en elquick-start libro mayor.

from pyqldb.config.retry_config import RetryConfig from pyqldb.driver.qldb_driver import QldbDriver def create_table(transaction_executor): print("Creating a table") transaction_executor.execute_statement("CREATE TABLE People") def create_index(transaction_executor): print("Creating an index") transaction_executor.execute_statement("CREATE INDEX ON People(lastName)") def insert_documents(transaction_executor, arg_1): print("Inserting a document") transaction_executor.execute_statement("INSERT INTO People ?", arg_1) def read_documents(transaction_executor): print("Querying the table") cursor = transaction_executor.execute_statement("SELECT * FROM People WHERE lastName = ?", 'Doe') for doc in cursor: print(doc["firstName"]) print(doc["lastName"]) print(doc["age"]) def update_documents(transaction_executor, age, lastName): print("Updating the document") transaction_executor.execute_statement("UPDATE People SET age = ? WHERE lastName = ?", age, lastName) # Configure retry limit to 3 retry_config = RetryConfig(retry_limit=3) # Initialize the driver print("Initializing the driver") qldb_driver = QldbDriver("quick-start", retry_config=retry_config) # Create a table qldb_driver.execute_lambda(lambda executor: create_table(executor)) # Create an index on the table qldb_driver.execute_lambda(lambda executor: create_index(executor)) # Insert a document doc_1 = { 'firstName': "John", 'lastName': "Doe", 'age': 32, } qldb_driver.execute_lambda(lambda x: insert_documents(x, doc_1)) # Query the table qldb_driver.execute_lambda(lambda executor: read_documents(executor)) # Update the document age = 42 lastName = 'Doe' qldb_driver.execute_lambda(lambda x: update_documents(x, age, lastName)) # Query the table for the updated document qldb_driver.execute_lambda(lambda executor: read_documents(executor))

Para ejecutar la aplicación completa, introduzca el comando que se muestra en el directorio de proyectos.

$ python app.py