This topic describes how to install and use RDS SDK for Python.
Debugging
Alibaba Cloud provides OpenAPI Explorer to simplify API usage. You can use OpenAPI Explorer to search for API operations, call API operations, and dynamically generate SDK sample code.
Prerequisites
- An AccessKey pair is created. For more information, see Create an AccessKey.
Note We recommend that you create a RAM user and grant the RAM user the permissions to access ApsaraDB for RDS instances. Then, you can use the AccessKey pair of the RAM user to call RDS SDK for Python. This allows you to protect the AccessKey pair of your Alibaba Cloud account. For more information, see Implement access control by using RAM.
- Python is installed.
Precautions
Make sure that your account has the required permissions. For more information, see RAM authorization.
Install RDS SDK for Python
- Visit the Python SDK page at GitHub.
- Download the RDS SDK for Python package and install the SDK by following the instructions provided in the README file.
Procedure
- Import the RDS SDK for Python package.
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkrds.request.v20140815.DescribeSQLLogRecordsRequest import DescribeSQLLogRecordsRequest
- Create an AcsClient.
client = AcsClient( "<access-key-id>", "<access-key-secret>", "<region-id>")
- Configure the endpoint that is used to connect to your RDS instance.
client.addEndpoint( "<region-id>", "<product>", "<endpoint>");
Note For more information, see Table 1.Table 1. RDS API endpoints Endpoint Region Public IP address ApsaraDB for RDS console rds.aliyuncs.com China (Qingdao): cn-qingdao
China (Beijing): cn-beijing
China (Hangzhou): cn-hangzhou
China (Shanghai): cn-shanghai
China (Shenzhen): cn-shenzhen
China (Hong Kong): cn-hongkong
Singapore: ap-southeast-1
US (Virginia): us-east-1
US (Silicon Valley): us-west-1
106.11.55.113 rds.cn-zhangjiakou.aliyuncs.com China (Zhangjiakou-Beijing Winter Olympics): cn-zhangjiakou 47.92.21.4 cn-zhangjiakou rds.ap-northeast-1.aliyuncs.com Japan (Tokyo): ap-northeast-1 47.91.8.8 ap-northeast-1 rds.ap-southeast-3.aliyuncs.com Malaysia (Kuala Lumpur): ap-southeast-3 47.254.226.21 ap-southeast-3 rds.ap-southeast-2.aliyuncs.com Australia (Sydney): ap-southeast-2 47.254.226.21 ap-southeast-3 rds.me-east-1.aliyuncs.com UAE (Dubai): me-east-1 47.91.39.7 me-east-1 rds.cn-huhehaote.aliyuncs.com China (Hohhot): cn-huhehaote 39.104.36.3 cn-huhehaote rds.ap-south-1.aliyuncs.com India (Mumbai): ap-south-1 149.129.159.7 ap-south-1-1 rds.ap-southeast-5.aliyuncs.com Indonesia (Jakarta): ap-southeast-5 149.129.204.7 ap-southeast-5 - Create a request to query details about your RDS instance, and configure the request
parameters.
request =DescribeDBInstanceAttributeRequest(); request.set_DBInstanceId("Name of your RDS instance");
- Initialize the AcsClient.
response = client.do_action_with_exception(request)
- View the response.
print response
Examples
- Create an RDS instance.
Sample request:
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkrds.request.v20140815.DescribeDBInstancePerformanceRequest import DescribeDBInstancePerformanceRequest from aliyunsdkrds.request.v20140815.CreateDBInstanceRequest import CreateDBInstanceRequest client = AcsClient( "<access-key-id>", "<access-key-secret>", "cn-hangzhou" ); request =CreateDBInstanceRequest(); request.set_Engine("PostgreSQL"); request.set_EngineVersion("10.0"); request.set_DBInstanceClass("pg.n1.micro.1"); request.set_DBInstanceStorage("20"); request.set_DBInstanceNetType("Intranet"); request.set_DBInstanceDescription("aaa"); request.set_SecurityIPList("127.0.0.1"); request.set_PayType("Postpaid"); request.set_ZoneId("cn-hangzhou-b"); request.set_InstanceNetworkType("Classic"); request.set_Period("Month"); request.set_UsedTime("2"); try: response = client.do_action_with_exception(request) print response except ServerException as e: print e except ClientException as e: print e
Sample response:
{ "OrderId":"20279634xxxxxxx", "DBInstanceId":"pgm-xxxxxxx", "RequestId":"BAF2A62B-804B-4C6C-BEE4-BAD2CA4C79E1" }
- Change the specifications of an RDS instance.
Sample request:
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkrds.request.v20140815.DescribeDBInstancePerformanceRequest import DescribeDBInstancePerformanceRequest from aliyunsdkrds.request.v20140815.ModifyDBInstanceSpecRequest import ModifyDBInstanceSpecRequest client = AcsClient( "<access-key-id>", "<access-key-secret>", "cn-hangzhou" ); request =ModifyDBInstanceSpecRequest(); request.set_DBInstanceId("pgm-xxxxxxx"); request.set_PayType("Postpaid"); request.set_DBInstanceClass("pg.n2.small.1"); try: response = client.do_action_with_exception(request) print response except ServerException as e: print e except ClientException as e: print e
Sample response:
{"RequestId":"B77F7694-B632-4C2A-BEA5-F8E44AD3A97E"}
- Create a read-only RDS instance.
Sample request:
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkrds.request.v20140815.DescribeDBInstancePerformanceRequest import DescribeDBInstancePerformanceRequest from aliyunsdkrds.request.v20140815.CreateReadOnlyDBInstanceRequest import CreateReadOnlyDBInstanceRequest client = AcsClient( "<access-key-id>", "<access-key-secret>", "cn-hangzhou" ); request =CreateReadOnlyDBInstanceRequest(); request.set_DBInstanceId("rm-xxxxxxx"); request.set_EngineVersion("5.6"); request.set_DBInstanceClass("rds.mysql.s1.small"); request.set_DBInstanceStorage("20"); request.set_DBInstanceDescription("testDesc"); request.set_PayType("Postpaid"); request.set_ZoneId("cn-hangzhou-b"); request.set_InstanceNetworkType("Classic"); try: response = client.do_action_with_exception(request) print response except ServerException as e: print e except ClientException as e: print e
Sample response:
{ "OrderId": "1214369xxxxxxx", "ConnectionString": "rr-bpxxxxxxx.mysql.rds.aliyuncs.com", "DBInstanceId": "rr-bpxxxxxxx", "Port": "3306", "RequestId": "1E43AAE0-BEE8-43DA-860D-EAF2AA0724DC" }
- Restart an RDS instance.
Sample request:
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkrds.request.v20140815.DescribeDBInstancePerformanceRequest import DescribeDBInstancePerformanceRequest from aliyunsdkrds.request.v20140815.RestartDBInstanceRequest import RestartDBInstanceRequest client = AcsClient( "<access-key-id>", "<access-key-secret>", "cn-hangzhou" ); request =RestartDBInstanceRequest(); request.set_DBInstanceId("rm-bpxxxxxxx"); try: response = client.do_action_with_exception(request) print response except ServerException as e: print e except ClientException as e: print e
Sample response:
{"RequestId":"EED6E546-099A-4434-AB09-C85DD396E17B"}
- Query RDS instances.
Sample request:
from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkrds.request.v20140815.DescribeDBInstancePerformanceRequest import DescribeDBInstancePerformanceRequest from aliyunsdkrds.request.v20140815.DescribeDBInstancesRequest import DescribeDBInstancesRequest client = AcsClient( "<access-key-id>", "<access-key-secret>", "cn-hangzhou" ); request =DescribeDBInstancesRequest(); print response try: response = client.do_action_with_exception(request) print response except ServerException as e: print e except ClientException as e: print e
Sample response:
{ "Items": { "DBInstance": [ { "LockMode": "Unlock", "DBInstanceNetType": "Intranet", "DBInstanceClass": "rds.mysql.s2.large", "ResourceGroupId": "rg-acfxxxxxxx", "DBInstanceId": "rm-bpxxxxxxx", "VpcCloudInstanceId": "", "ZoneId": "cn-hangzhou-f", "ReadOnlyDBInstanceIds": { "ReadOnlyDBInstanceId": [] }, "InstanceNetworkType": "Classic", "ConnectionMode": "Standard", "Engine": "MySQL", "MutriORsignle": false, "InsId": 1, "ExpireTime": "", "CreateTime": "2018-11-07T15:52Z", "DBInstanceType": "Primary", "RegionId": "cn-hangzhou", "EngineVersion": "5.7", "LockReason": "", "DBInstanceStatus": "Running", "PayType": "Postpaid" }, { "LockMode": "Unlock", "DBInstanceNetType": "Intranet", "DBInstanceClass": "rds.mysql.s2.large", "ResourceGroupId": "rg-acfxxxxxxx", "DBInstanceId": "rm-bpxxxxxxx", "VpcCloudInstanceId": "", "ZoneId": "cn-hangzhou-g", "ReadOnlyDBInstanceIds": { "ReadOnlyDBInstanceId": [] }, "InstanceNetworkType": "Classic", "ConnectionMode": "Standard", "Engine": "MySQL", "MutriORsignle": false, "InsId": 1, "ExpireTime": "2019-11-07T16:00:00Z", "CreateTime": "2018-11-07T15:42Z", "DBInstanceType": "Primary", "RegionId": "cn-hangzhou", "EngineVersion": "5.7", "LockReason": "", "DBInstanceStatus": "Running", "PayType": "Prepaid" } ] }, "TotalRecordCount": 209, "PageNumber": 1, "RequestId": "0C5793A6-80C3-4AC0-A5E1-CCA25F387AE6", "PageRecordCount": 30 }