

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 de Amazon QLDB para Python: tutorial de inicio rápido
<a name="driver-quickstart-python"></a>

**importante**  
Aviso de fin del soporte: los clientes actuales podrán utilizar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte [Migración de un registro de Amazon QLDB a Amazon Aurora](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/) PostgreSQL.

En este tutorial aprenderá a configurar una aplicación sencilla con la versión más reciente del controlador de Amazon QLDB para Python. En esta guía se incluyen los pasos para instalar el controlador y ejemplos de código breve de las operaciones básicas de *creación, lectura, actualización y eliminación* (CRUD). Para ver ejemplos más detallados que presentan estas operaciones en una aplicación de muestra completa, consulte [Tutorial de Python](getting-started.python.tutorial.md).

**Topics**
+ [Requisitos previos](#driver-quickstart-python.prereqs)
+ [Paso 1: Configuración del proyecto](#driver-quickstart-python.step-1)
+ [Paso 2: inicializar el controlador](#driver-quickstart-python.step-2)
+ [Paso 3: crear una tabla y un índice](#driver-quickstart-python.step-3)
+ [Paso 4: insertar un documento](#driver-quickstart-python.step-4)
+ [Paso 5: consulta del documento](#driver-quickstart-python.step-5)
+ [Paso 6: actualizar el documento](#driver-quickstart-python.step-6)
+ [Ejecución de la aplicación completa](#driver-quickstart-python.complete)

## Requisitos previos
<a name="driver-quickstart-python.prereqs"></a>

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

1. Si aún no lo ha hecho, complete el [Requisitos previos](getting-started.python.md#getting-started.python.prereqs) para el controlador Python. Esto incluye registrarse AWS, conceder acceso programático para el desarrollo e instalar la versión 3.6 o posterior de Python.

1. Cree un libro mayor denominado `quick-start`.

   Para obtener más información sobre cómo crear un libro mayor, consulte [Operaciones básicas de libros mayores de Amazon QLDB](ledger-management.basics.md) o [Paso 1: crear un nuevo libro mayor](getting-started-step-1.md) en *Introducción a la consola*.

## Paso 1: Configuración del proyecto
<a name="driver-quickstart-python.step-1"></a>

En primer lugar, configure su proyecto de Python.

**nota**  
Si usa un IDE con características para automatizar estos pasos de configuración, puede pasar directamente a [Paso 2: inicializar el controlador](#driver-quickstart-python.step-2).

1. Cree una carpeta para su aplicación.

   ```
   $ mkdir myproject
   $ cd myproject
   ```

1. Para instalar el controlador de QLDB para Python desde PyPI, introduzca el comando `pip`.

   ```
   $ pip install pyqldb
   ```

   Al instalar el controlador también se instalan sus dependencias, incluidos [AWS SDK para Python (Boto3)](https://aws.amazon.com/sdk-for-net) y los paquetes de [Amazon Ion](ion.md).

1. Cree un nuevo archivo llamado `app.py`.

   A continuación, añada gradualmente 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 ejecutar la [aplicación completa](#driver-quickstart-python.complete).

## Paso 2: inicializar el controlador
<a name="driver-quickstart-python.step-2"></a>

Inicialice una instancia del controlador que se conecte al libro mayor denominado `quick-start`. Agregue el siguiente código al archivo `app.py`.

```
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
<a name="driver-quickstart-python.step-3"></a>

El siguiente ejemplo de código muestra cómo ejecutar las instrucciones `CREATE TABLE` y `CREATE INDEX`.

Agregue el siguiente código para crear una tabla con el nombre `People` y un índice para el campo `lastName` de dicha tabla. Los [índices](ql-reference.create-index.md) son necesarios para optimizar el rendimiento de las consultas y ayudar a limitar las excepciones de conflicto de [control de concurrencia optimista (OCC)](concurrency.md).

```
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
<a name="driver-quickstart-python.step-4"></a>

El siguiente ejemplo de código muestra cómo ejecutar una instrucción `INSERT`. QLDB es compatible con el lenguaje de consultas [PartiQL](ql-reference.md) (compatible con SQL) y el formato de datos [Amazon Ion](ion.md) (superconjunto de JSON).

Añada el siguiente código para insertar un documento en la tabla `People`.

```
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 emplea un signo de interrogación (`?`) como marcador de posición variable para pasar la información del documento a la instrucción. El método `execute_statement` admite valores tanto en los tipos de Amazon Ion como en los tipos nativos de Python.

**sugerencia**  
Para insertar varios documentos mediante una sola instrucción [INSERT](ql-reference.insert.md), puede pasar un parámetro del tipo [list](driver-working-with-ion.md#driver-ion-list) a la instrucción de la siguiente manera.  

```
# people is a list
transaction_executor.execute_statement("INSERT INTO Person ?", people)
```
No coloque el marcador de posición variable (`?`) entre corchetes de doble ángulo (`<<...>>`) al pasar una lista. En las instrucciones PartiQL manuales, los corchetes de doble ángulo indican una colección desordenada conocida como *bolsa*.

## Paso 5: consulta del documento
<a name="driver-quickstart-python.step-5"></a>

El siguiente ejemplo de código muestra cómo ejecutar una instrucción `SELECT`.

Agregue el siguiente código para consultar un documento de la tabla `People`.

```
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
<a name="driver-quickstart-python.step-6"></a>

El siguiente ejemplo de código muestra cómo ejecutar una instrucción `UPDATE`.

1. Añada el siguiente código para actualizar un documento de la tabla `People` actualizando `age` a `42`.

   ```
   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))
   ```

1. Vuelva a consultar la tabla para ver el valor actualizado.

   ```
   # Query the updated document
   qldb_driver.execute_lambda(lambda executor: read_documents(executor))
   ```

1. Para ejecutar la aplicación, introduzca el siguiente comando desde el directorio del proyecto.

   ```
   $ python app.py
   ```

## Ejecución de la aplicación completa
<a name="driver-quickstart-python.complete"></a>

El siguiente ejemplo de código es la versión completa de la aplicación `app.py`. En lugar de seguir los pasos anteriores de forma individual, también puede 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 denominado `quick-start`.

**nota**  
Antes de ejecutar este código, asegúrese de no tener ya una tabla activa con el nombre `People` en el libro mayor `quick-start`.

```
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 siguiente comando desde el directorio de su proyecto.

```
$ python app.py
```