如何格式化DynamoDB中Table.scan()的输出结果?
如何格式化DynamoDB Table.scan()的输出为指定样式?
你可以通过两步实现需求:转换DynamoDB返回的Decimal类型为Python原生数字,然后按字段逐行打印。以下是具体实现代码:
完整示例代码
import boto3 from decimal import Decimal # 初始化DynamoDB表 table = boto3.resource('dynamodb').Table('Players') # 扫描表获取数据 response = table.scan() items = response['Items'] # 定义Decimal转换函数,处理整数/小数情况 def convert_decimal(value): if isinstance(value, Decimal): return int(value) if value % 1 == 0 else float(value) return value # 遍历每个球员数据(如果只需要第一个,去掉外层for循环即可) for player in items: # 转换所有Decimal字段 formatted_player = {key: convert_decimal(val) for key, val in player.items()} # 按指定格式逐行打印 for key, val in formatted_player.items(): print(f"{key}: {val}") # 球员之间加空行分隔(可选) print()
只打印第一个球员的简化版本
如果只需要输出示例中的第一个球员信息,用这段代码更高效:
import boto3 from decimal import Decimal table = boto3.resource('dynamodb').Table('Players') response = table.scan() items = response['Items'] if items: player = items[0] for key, val in player.items(): # 直接转换并打印 converted_val = int(val) if isinstance(val, Decimal) and val % 1 == 0 else val print(f"{key}: {converted_val}")
说明
- DynamoDB会将数字类型存储为
Decimal对象,直接打印会显示Decimal('10')格式,所以需要转换为Python原生的int或float。 - 代码中的转换逻辑会自动判断Decimal是整数还是小数,分别转换为对应类型,保证输出格式符合预期。
内容的提问来源于stack exchange,提问作者UnknYell0
相关产品推荐
相关产品推荐

