0

基于适用于 Python 的 AWS TimeStream SDK 文档,我有以下代码:

import boto3

def list_databases(self):
        print("Listing databases")
        try:
            result = self.client.list_databases(MaxResults=5)
            self._print_databases(result['Databases'])
            next_token = result.get('NextToken', None)
            while next_token:
                result = self.client.list_databases(NextToken=next_token, MaxResults=5)
                self._print_databases(result['Databases'])
                next_token = result.get('NextToken', None)
        except Exception as err:
            print("List databases failed:", err)

session = boto3.Session(profile_name='superuser', region_name='eu-west-1')
query_client = session.client('timestream-query')

list_databases(query_client)

我的用户的身份验证superuser似乎工作正常,但boto3用于我的会话query_client没有客户端对象:

Listing databases
List databases failed: 'TimestreamQuery' object has no attribute 'client'

我错过了什么?

4

1 回答 1

1

此方法中的此参数名称可能是一个错误:

# this name is discouraged in non-OO code:
def list_databases(self):

self通常用于面向对象的 python 代码中,这里不是这种情况。

将其重命名如下:

# this is better:
def list_databases(client):

然后,删除函数正文中提及的任何内容self,例如:

# this is incorrect:
result = self.client.list_databases(MaxResults=5)

应该:

# this should work:
result = client.list_databases(MaxResults=5)
于 2021-02-08T11:19:41.643 回答