Chiamata dell’API dati di Amazon RDS da un’applicazione Python - Amazon Aurora

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à.

Chiamata dell’API dati di Amazon RDS da un’applicazione Python

Puoi chiamare l’API dati di Amazon RDS (API dati) da un’applicazione Python.

Gli esempi seguenti utilizzano il kit SDK AWS for Python (Boto). Per ulteriori informazioni su Boto, consulta la documentazione di SDK AWS for Python (Boto 3).

In ogni esempio, sostituisci il nome della risorsa Amazon (ARN) del cluster di database con l’ARN del cluster di database Aurora. Inoltre, sostituisci l'ARN segreto con l'ARN del segreto in Secrets Manager che consente l'accesso al cluster database.

Esecuzione di una query SQL

Puoi eseguire un'istruzione SELECT e recuperare i risultati da un'applicazione Python.

L'esempio seguente esegue una query SQL.

import boto3 rdsData = boto3.client('rds-data') cluster_arn = 'arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster' secret_arn = 'arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret' response1 = rdsData.execute_statement( resourceArn = cluster_arn, secretArn = secret_arn, database = 'mydb', sql = 'select * from employees limit 3') print (response1['records']) [ [ { 'longValue': 1 }, { 'stringValue': 'ROSALEZ' }, { 'stringValue': 'ALEJANDRO' }, { 'stringValue': '2016-02-15 04:34:33.0' } ], [ { 'longValue': 1 }, { 'stringValue': 'DOE' }, { 'stringValue': 'JANE' }, { 'stringValue': '2014-05-09 04:34:33.0' } ], [ { 'longValue': 1 }, { 'stringValue': 'STILES' }, { 'stringValue': 'JOHN' }, { 'stringValue': '2017-09-20 04:34:33.0' } ] ]

Esecuzione di un'istruzione SQL DML

Puoi eseguire un'istruzione DML (Data Manipulation Language) per inserire, aggiornare o eliminare dati nel database. Puoi anche utilizzare parametri in istruzioni DML.

Importante

Se una chiamata non fa parte di una transazione perché non include il parametro transactionID, viene eseguito automaticamente il commit delle modifiche risultanti dalla chiamata.

L'esempio seguente esegue un'istruzione SQL insert e utilizza i parametri.

import boto3 cluster_arn = 'arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster' secret_arn = 'arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret' rdsData = boto3.client('rds-data') param1 = {'name':'firstname', 'value':{'stringValue': 'JACKSON'}} param2 = {'name':'lastname', 'value':{'stringValue': 'MATEO'}} paramSet = [param1, param2] response2 = rdsData.execute_statement(resourceArn=cluster_arn, secretArn=secret_arn, database='mydb', sql='insert into employees(first_name, last_name) VALUES(:firstname, :lastname)', parameters = paramSet) print (response2["numberOfRecordsUpdated"])

Esecuzione di una transazione SQL

Puoi avviare una transazione SQL, eseguire una o più istruzioni SQL, quindi eseguire il commit delle modifiche con un'applicazione Python.

Importante

Una transazione scade se non ci sono chiamate che utilizzano il suo ID transazione in un periodo di tre minuti. Se una transazione scade prima che venga eseguito il commit della stessa, viene automaticamente sottoposta a rollback.

Se non specifichi un ID transazione, viene eseguito automaticamente il commit delle modifiche risultanti dalla chiamata.

L'esempio seguente esegue una transazione SQL che inserisce una riga in una tabella.

import boto3 rdsData = boto3.client('rds-data') cluster_arn = 'arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster' secret_arn = 'arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret' tr = rdsData.begin_transaction( resourceArn = cluster_arn, secretArn = secret_arn, database = 'mydb') response3 = rdsData.execute_statement( resourceArn = cluster_arn, secretArn = secret_arn, database = 'mydb', sql = 'insert into employees(first_name, last_name) values('XIULAN', 'WANG')', transactionId = tr['transactionId']) cr = rdsData.commit_transaction( resourceArn = cluster_arn, secretArn = secret_arn, transactionId = tr['transactionId']) cr['transactionStatus'] 'Transaction Committed' response3['numberOfRecordsUpdated'] 1
Nota

Se esegui un'istruzione DDL (Data Definition Language), è consigliabile continuare a eseguire l'istruzione dopo il timeout della chiamata. Quando un'istruzione DDL termina prima che l'esecuzione sia terminata, può causare errori e verosimilmente strutture dati danneggiate. Per continuare l’esecuzione di un’istruzione dopo che una chiamata supera l’intervallo di timeout di 45 secondi dell’API dati di RDS, imposta il parametro continueAfterTimeout su true.