Appel de l'API de données Amazon RDS depuis une application Python - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Appel de l'API de données Amazon RDS depuis une application Python

Vous pouvez appeler l'API de données Amazon RDS (API de données) depuis une application Python.

Les exemples suivants utilisent le AWS SDK pour Python (Boto). Pour plus d'informations sur Boto, consultez la documentation AWS SDK pour Python (Boto 3).

Dans chaque exemple, remplacez le nom de ressource Amazon (ARN) du cluster de base de données par l'ARN de votre cluster de base de données Aurora. De même, remplacez l'ARN du secret par l'ARN du secret dans Secrets Manager qui autorise l'accès au cluster de base de données.

Exécution d'une requête SQL

Vous pouvez exécuter une instruction SELECT puis extraire les résultats avec une application Python.

L'exemple suivant exécute une requête 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' } ] ]

Exécution d'une instruction SQL DML

Vous pouvez exécuter une instruction en langage de manipulation de données (DML) pour intégrer, mettre à jour ou supprimer des données dans votre base de données. Vous pouvez également utiliser des paramètres dans les instructions DML.

Important

Si un appel ne fait pas partie d'une transaction car il ne comprend pas le paramètre transactionID, les modifications résultant de l'appel sont validées automatiquement.

L'exemple suivant exécute une instruction SQL INSERT et utilise des paramètres.

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"])

Exécution d'une transaction SQL

Vous pouvez démarrer une transaction SQL, exécuter une ou plusieurs instructions SQL, puis valider les modifications avec une application Python.

Important

Une transaction expire si aucun appel n'utilise son identifiant de transaction dans un délai de trois minutes. Si une transaction expire avant d'être validée, elle est automatiquement restaurée.

Si vous ne spécifiez pas d'identifiant de transaction, les modifications résultant de l'appel sont validées automatiquement.

L'exemple suivant exécute une transaction SQL qui insère une ligne dans un tableau.

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
Note

Si vous exécutez une instruction en langage de définition de données (DDL), nous vous recommandons de continuer à exécuter l'instruction une fois l'appel expiré. Lorsqu'une instruction DDL se termine avant la fin de son exécution, cela peut entraîner des erreurs et corrompre les structures de données. Pour continuer à exécuter une instruction après qu'un appel dépasse le délai d'expiration de 45 secondes de l'API de données RDS, définissez le continueAfterTimeout paramètre sur. true