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 mediante la última versión del controlador de Amazon QLDB para Python. Esta guía incluye pasos para instalar el controlador y ejemplos de código abreviado deCrear, leer, actualizar y eliminar(CRUD). Para obtener ejemplos más detallados que muestran estas operaciones en una aplicación de ejemplo completa, consulte laTutorial de Python.

Requisitos previos

Antes de comenzar, asegúrese de que hace lo siguiente:

  1. Complete elRequisitos previosPara el controlador Python, si aún no lo ha hecho. Esto incluye inscribirse enAWS, obtención de unAWSclave de acceso para el desarrollo e instalación de Python versión 3.6 o posterior.

  2. Crear un libro mayor denominadoquick-start.

    Para obtener más información acerca de cómo crear un libro mayor, consulteOperaciones básicas para los libros mayores de Amazon QLDBoPaso 1: Creación de un libro de contabilidad nuevoenIntroducción a la consola.

Paso 1: Configuración del proyecto

En primer lugar, configure el proyecto Python.

nota

Si utiliza un IDE que dispone de 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 lo siguientepipcomando.

    $ pip install pyqldb

    La instalación del controlador también instala sus dependencias, incluida laAWS SDK for Python (Boto3)yAmazon Ionpaquetes.

  3. Cree un nuevo archivo llamado app.py.

    A continuación, agregue de forma incremental los ejemplos de código en los siguientes pasos para probar algunas operaciones CRUD básicas. O bien, puede omitir lastep-by-steptutorial y, en su lugar, ejecuta elsolicitud completa.

Paso 2: Inicializar el controlador

Inicializar una instancia del controlador que se conecta al libro mayor denominadoquick-start. Añada el siguiente código a suapp.pyfile.

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: Creación de una tabla y un índice

En el siguiente ejemplo de código, se muestra cómo ejecutarCREATE TABLEyCREATE INDEXInstrucciones

Añada el siguiente código que crea una tabla llamadaPeopley un índice para ellastNamesobre esa mesa. Índicesson necesarios para optimizar el rendimiento de las consultas y ayudar a limitarcontrol de concurrencia optimista (OCC)excepciones de conflicto.

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

En el siguiente ejemplo de código, se muestra cómo ejecutar unINSERTstatement. QLDB admite laPartiQLlenguaje de consulta (compatible con SQL) y elAmazon Ionformato de datos (superconjunto de JSON).

Añada el siguiente código que inserta un documento en elPeoplemesa.

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 usa un signo de interrogación (?) como marcador de posición variable para pasar la información del documento a la declaración. Laexecute_statementadmite valores tanto en tipos Amazon Ion como en tipos nativos de Python.

sugerencia

Para insertar varios documentos mediante un soloINSERT, puede pasar un parámetro de tipolistaa la declaración de la siguiente manera.

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

No incluye el marcador de posición variable (?) en soportes de doble ángulo (<<...>>) al pasar una lista. En las instrucciones manuales PartiQL, los corchetes angulares dobles indican una colección no ordenada conocida comobolsa.

Paso 5: Consultar el documento

En el siguiente ejemplo de código, se muestra cómo ejecutar unSELECTstatement.

Agregue el siguiente código que consulta un documento delPeoplemesa.

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: Actualizar el documento

En el siguiente ejemplo de código, se muestra cómo ejecutar unUPDATEstatement.

  1. Agregue el siguiente código que actualiza un documento en elPeopletabla mediante la actualizaciónagea42.

    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. Consulte de nuevo la tabla para ver el valor actualizado.

    # Query the updated document qldb_driver.execute_lambda(lambda executor: read_documents(executor))
  3. Introduzca el siguiente comando del directorio del proyecto para ejecutar la aplicación.

    $ python app.py

Ejecución de la aplicación completa

El siguiente ejemplo de código es la versión completa delapp.pyrevisiones de. En lugar de realizar los pasos anteriores individualmente, también puede copiar y ejecutar este ejemplo de código de extremo a extremo. Esta aplicación muestra algunas operaciones CRUD básicas en el libro mayor denominadoquick-start.

nota

Antes de ejecutar este código, asegúrese de que aún no tiene una tabla activa denominadaPeopleen laquick-startlibro 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))

Introduzca el siguiente comando del directorio del proyecto para ejecutar la aplicación completa.

$ python app.py