ITPub博客

首页 > > > 阿里云rds的api调用

阿里云rds的api调用

作者:gray1982 时间:2020-01-20 14:54:24 0 删除 编辑

随着项目的增加,我们使用数据库的实例也是增多,在阿里云上不仅仅是rds还有polardb的使用,而且由于多个阿里云账号,在查询数据库的地址、所属实例等信息比较麻烦。所以我这里想了一个方法是就是汇总一下,不然在开发总会找你问,效率不高。

我是把这个汇总直接显示在平台上,并且加的一个页面级的缓存,毕竟增加实例的事情在这我里一年也不会增加几回。

在这里我先直接给出api调用的代码脚本,并不是在平台的模块里显示的。polardb的相对还比较简单点,可以自己着手写下。




#coding=utf-8

# pip install aliyun-python-sdk-rds



from conf.settings import *

from util.check_sth import *

from aliyunsdkrds.request.v20140815.DescribeDBInstancesRequest import DescribeDBInstancesRequest

from aliyunsdkrds.request.v20140815.DescribeDatabasesRequest import DescribeDatabasesRequest

from aliyunsdkrds.request.v20140815.DescribeDBInstanceNetInfoRequest import DescribeDBInstanceNetInfoRequest

from aliyunsdkrds.request.v20140815.DescribeDBInstanceAttributeRequest import DescribeDBInstanceAttributeRequest






class query_rds(object):

    def __init__(self, account):

        self.client = AcsClient(token[account + '_accesskey'], token[account + '_accesspasswd'], region['bj'])

        self.request = DescribeDBInstancesRequest()

        self.request.set_accept_format('json')

        self.response = self.client.do_action_with_exception(self.request)

  global  true,false

        false = "false"

        true = "true"



    def _get_rds_list(self):

        return eval(str(self.response, encoding='utf-8'))["Items"]["DBInstance"]


    def rds_instance_info(self):

        for rds in self._get_rds_list():

            if 'MasterInstanceId' in rds.keys():

                print ("实例名"+rds["DBInstanceDescription"]+"-->是从库,ID为:"+rds['DBInstanceId'])

                print ("它使用的主库ID为:"+rds['MasterInstanceId'])

                for netinfo in self._get_rds_netinfo(rds['DBInstanceId'])["DBInstanceNetInfos"]["DBInstanceNetInfo"]:

                    print ('实例用网络地址为:'+netinfo['ConnectionString'])

                print("")

            else:

                print (rds["DBInstanceDescription"]+"-->是主库,使用的ID为:"+rds['DBInstanceId'])

                for dbname in self._get_rds_dbname(rds['DBInstanceId'])["Databases"]["Database"]:

                    print ("拥有数据-->"+dbname['DBName'])

                for netinfo in self._get_rds_netinfo(rds['DBInstanceId'])["DBInstanceNetInfos"]["DBInstanceNetInfo"]:

                    print ('实例用网络地址为:'+netinfo['ConnectionString'])

                

            print("")


    def _get_rds_dbname(self, rDBInstanceId):

        request = DescribeDatabasesRequest()

        request.set_accept_format('json')

        request.set_DBInstanceId(rDBInstanceId)

        response = self.client.do_action_with_exception(request)

        return eval(str(response, encoding='utf-8'))


    def _get_rds_netinfo(self, rDBInstanceId):

        request = DescribeDBInstanceNetInfoRequest()

        request.set_accept_format('json')

        request.set_DBInstanceId(rDBInstanceId)

        response = self.client.do_action_with_exception(request)

        return eval(str(response, encoding='utf-8'))


    def _get_instance_attribute(self, rDBInstanceId):

        request = DescribeDBInstanceAttributeRequest()

        request.set_accept_format('json')

        request.set_DBInstanceId(rDBInstanceId)

        response = self.client.do_action_with_exception(request)

        return eval(str(response, encoding='utf-8'))

        

        

if __name__ == '__main__':

    account = sys.argv[1] if check_input_lens() else 'xd'

    query_rds(account).rds_instance_info()



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10915175/viewspace-3125615/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2017-03-31

  • 博文量
    3
  • 访问量
    281