Driver Amazon QLDB per Python — Tutorial di avvio rapido - Database Amazon Quantum Ledger (Amazon QLDB)

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

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 ed esempi di creazione, lettura, aggiornamento ed eliminazione (CRUD). Per esempi più approfonditi che dimostrano queste operazioni in un'applicazione di esempio completa, consulta ilTutorial di Python.

Prerequisiti

Prima di iniziare, assicurati di completare quanto segue:

  1. Completa il driverPrerequisiti for the Python, se non l'hai già fatto. Ciò include la registrazioneAWS, la concessione dell'accesso programmatico per lo sviluppo e l'installazione di Python versione 3.6 o successiva.

  2. Crea un libro contabile denominatoquick-start.

    Per informazioni su come creare un libro mastro, consultaOperazioni di base per i libri mastri Amazon QLDB oFase 1: creazione di un nuovo libro mastro in Guida introduttiva alla console.

Fase 1: Configurazione del progetto

In primo luogo, configura il tuo progetto Python.

Nota

Se utilizzi un IDE con funzionalità per automatizzare questi passaggi di configurazione, puoi passare direttamente aFase 2: Inizializzazione del driver.

  1. Crea una cartella per la tua applicazione.

    $ mkdir myproject $ cd myproject
  2. Per installare il driver QLDB per Python da PyPI, immettere il seguentepip comando.

    $ pip install pyqldb

    L'installazione del driver installa anche le relative dipendenze, inclusi i pacchetti Amazon Ion AWS SDK for Python (Boto3)e Amazon.

  3. Creare 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.

Fase 2: Inizializzazione del driver

Inizializza un'istanza del driver che si connette al registro denominatoquick-start. Aggiungi il seguente codice alapp.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: Crea una tabella e un indice

L'esempio di codice seguente mostra come eseguireCREATE TABLE leCREATE INDEX istruzioni.

Aggiungi il codice seguente per creare una tabella denominataPeople e un indice per illastName campo di quella tabella. Gli indici sono necessari per ottimizzare le prestazioni delle query e contribuire a limitare le eccezioni di conflitto OCC (Optimistic Concurrency Control).

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: inserisci un documento

L'esempio di codice seguente mostra come eseguire un'INSERTistruzione. QLDB supporta il linguaggio di interrogazione PartiQL (compatibile con SQL) e il formato dati Amazon Ion (superset di JSON).

Aggiungete il seguente codice che inserisce un documento nellaPeople tabella.

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 alla dichiarazione. Ilexecute_statement metodo supporta valori sia nei tipi Amazon Ion che nei tipi nativi di Python.

Suggerimento

Per inserire più documenti utilizzando una singolaINSERT istruzione, è possibile passare un elenco di parametri di tipo all'istruzione come segue.

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

Non si racchiude la variabile placeholder (?) tra parentesi a doppio angolo (<<...>>) quando si passa un elenco. Nelle istruzioni PartiQL, le parentesi a doppio angolo indicano una raccolta non ordinata nota come borsa.

Fase 5: esegui query sul documento

L'esempio di codice seguente mostra come eseguire un'SELECTistruzione.

Aggiungete il codice seguente per interrogare un documento dallaPeople 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: Aggiornamento del documento

L'esempio di codice seguente mostra come eseguire un'UPDATEistruzione.

  1. Aggiungi il codice seguente che aggiorna un documento nellaPeople tabella eseguendo l'aggiornamentoage 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. Interroga nuovamente la tabella per visualizzare il valore aggiornato.

    # Query the updated document qldb_driver.execute_lambda(lambda executor: read_documents(executor))
  3. Per eseguire l'applicazione, inserisci il comando seguente dalla directory del progetto.

    $ python app.py

Esecuzione dell'applicazione completa

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

Nota

Prima di eseguire questo codice, assicuratevi di non avere già una tabella attiva denominataPeople nelquick-start libro mastro.

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, inserisci il seguente comando dalla directory del progetto.

$ python app.py