

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Driver Amazon QLDB per Python — Tutorial di avvio rapido
<a name="driver-quickstart-python"></a>

**Importante**  
Avviso di fine del supporto: i clienti esistenti potranno utilizzare Amazon QLDB fino alla fine del supporto, il 31/07/2025. Per ulteriori dettagli, consulta [Migrare un registro Amazon QLDB su Amazon Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/).

In questo tutorial, imparerai come configurare una semplice applicazione utilizzando l'ultima versione del driver Amazon QLDB per Python. Questa guida include i passaggi per l'installazione del driver e brevi esempi in codice delle operazioni di base di *creazione, lettura, aggiornamento ed eliminazione* (CRUD). Per esempi più approfonditi che illustrano queste operazioni in un'applicazione di esempio completa, consulta la. [Tutorial di Python](getting-started.python.tutorial.md)

**Topics**
+ [Prerequisiti](#driver-quickstart-python.prereqs)
+ [Fase 1: Configurazione del progetto](#driver-quickstart-python.step-1)
+ [Fase 2: Inizializzare il driver](#driver-quickstart-python.step-2)
+ [Fase 3: Creare una tabella e un indice](#driver-quickstart-python.step-3)
+ [Fase 4: Inserimento di un documento](#driver-quickstart-python.step-4)
+ [Fase 5: Interrogare il documento](#driver-quickstart-python.step-5)
+ [Fase 6: Aggiornare il documento](#driver-quickstart-python.step-6)
+ [Esecuzione dell'applicazione completa](#driver-quickstart-python.complete)

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

Prima di iniziare, assicurati di fare quanto segue:

1. Completa il driver [Prerequisiti](getting-started.python.md#getting-started.python.prereqs) for the Python, se non l'hai già fatto. Ciò include la registrazione AWS, la concessione dell'accesso programmatico per lo sviluppo e l'installazione di Python versione 3.6 o successiva.

1. Crea un libro mastro denominato. `quick-start`

   Per informazioni su come creare un libro mastro, consulta [Operazioni di base per i registri Amazon QLDB](ledger-management.basics.md) o [Fase 1: Creare un nuovo libro contabile](getting-started-step-1.md) in *Guida introduttiva alla console*.

## Fase 1: Configurazione del progetto
<a name="driver-quickstart-python.step-1"></a>

Per prima cosa, configura il tuo progetto Python.

**Nota**  
Se utilizzi un IDE con funzionalità per automatizzare questi passaggi di configurazione, puoi passare direttamente a. [Fase 2: Inizializzare il driver](#driver-quickstart-python.step-2)

1. Crea una cartella per la tua applicazione.

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

1. Per installare il driver QLDB per Python da PyPI, inserisci il seguente comando. `pip`

   ```
   $ pip install pyqldb
   ```

   L'installazione del driver installa anche le sue dipendenze, inclusi i pacchetti Amazon [Ion e [AWS SDK per Python (Boto3)](https://aws.amazon.com/sdk-for-net)Amazon.](ion.md)

1. Crea un nuovo file denominato `app.py`.

   Quindi, aggiungi in modo incrementale gli esempi di codice nei passaggi seguenti per provare alcune operazioni CRUD di base. [In alternativa, puoi saltare il step-by-step tutorial ed eseguire invece l'applicazione completa.](#driver-quickstart-python.complete)

## Fase 2: Inizializzare il driver
<a name="driver-quickstart-python.step-2"></a>

Inizializza un'istanza del driver che si connette al registro denominato. `quick-start` Aggiungi il codice seguente al tuo `app.py` file.

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

## Fase 3: Creare una tabella e un indice
<a name="driver-quickstart-python.step-3"></a>

Il seguente esempio di codice mostra come eseguire le `CREATE INDEX` istruzioni `CREATE TABLE` e le istruzioni.

Aggiungere il codice seguente che crea una tabella denominata `People` e un indice per il `lastName` campo di tale tabella. [Gli indici](ql-reference.create-index.md) sono necessari per ottimizzare le prestazioni delle query e aiutano a limitare le eccezioni ai conflitti [OCC (Optimistic Concurrency Control)](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))
```

## Fase 4: Inserimento di un documento
<a name="driver-quickstart-python.step-4"></a>

Il seguente esempio di codice mostra come eseguire un'`INSERT`istruzione. QLDB supporta il linguaggio di interrogazione [PartiQL](ql-reference.md) (compatibile con SQL) e il formato dati [Amazon](ion.md) Ion (superset di JSON).

Aggiungi il codice seguente che inserisce un documento nella tabella. `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))
```

Questo esempio utilizza un punto interrogativo (`?`) come segnaposto variabile per passare le informazioni del documento all'istruzione. Il `execute_statement` metodo supporta valori sia nei tipi Amazon Ion che nei tipi nativi Python.

**Suggerimento**  
Per inserire più documenti utilizzando una singola [INSERT](ql-reference.insert.md) istruzione, puoi passare un parametro di tipo [elenco](driver-working-with-ion.md#driver-ion-list) all'istruzione come segue.  

```
# people is a list
transaction_executor.execute_statement("INSERT INTO Person ?", people)
```
Non racchiudete la variabile placeholder (`?`) tra parentesi angolari doppie (`<<...>>`) quando passate un elenco. *Nelle istruzioni PartiQL manuali, le parentesi doppie angolari indicano una raccolta non ordinata nota come borsa.*

## Fase 5: Interrogare il documento
<a name="driver-quickstart-python.step-5"></a>

Il seguente esempio di codice mostra come eseguire un'`SELECT`istruzione.

Aggiungere il codice seguente per interrogare un documento dalla `People` tabella.

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

## Fase 6: Aggiornare il documento
<a name="driver-quickstart-python.step-6"></a>

Il seguente esempio di codice mostra come eseguire un'`UPDATE`istruzione.

1. Aggiungere il codice seguente che aggiorna un documento nella `People` tabella aggiornandolo `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. Eseguite nuovamente una query sulla tabella per vedere il valore aggiornato.

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

1. Per eseguire l'applicazione, immettete il seguente comando dalla directory del progetto.

   ```
   $ python app.py
   ```

## Esecuzione dell'applicazione completa
<a name="driver-quickstart-python.complete"></a>

Il seguente esempio di codice è la versione completa dell'`app.py`applicazione. Invece di eseguire i passaggi precedenti singolarmente, potete anche copiare ed eseguire questo esempio di codice dall'inizio alla fine. Questa applicazione dimostra alcune operazioni CRUD di base sul registro denominato. `quick-start`

**Nota**  
Prima di eseguire questo codice, assicuratevi di non avere già una tabella attiva denominata `People` nel registro. `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))
```

Per eseguire l'applicazione completa, immettete il seguente comando dalla directory del progetto.

```
$ python app.py
```