AWS RDS Data API的executeStatement方法确实不返回列名。但你可以使用describeTable方法来获取表的列名,并将其与executeStatement方法返回的结果进行关联。
下面是一个使用AWS SDK for Python(Boto3)的示例代码来解决这个问题:
import boto3
def execute_statement_with_column_names(database_name, table_name, sql):
# 创建RDS Data API客户端
client = boto3.client('rds-data')
# 描述表,获取列名
describe_table_response = client.describe_table(
resourceArn='your-database-arn',
secretArn='your-secret-arn',
database=database_name,
tableName=table_name
)
column_names = [column['name'] for column in describe_table_response['columnMetadata']]
# 执行SQL语句
execute_statement_response = client.execute_statement(
resourceArn='your-database-arn',
secretArn='your-secret-arn',
database=database_name,
sql=sql
)
# 构建结果集,将列名与对应的值进行关联
results = []
for record in execute_statement_response['records']:
result = {}
for i, value in enumerate(record):
result[column_names[i]] = list(value.values())[0]
results.append(result)
return results
在使用这个示例代码时,你需要将"your-database-arn"和"your-secret-arn"替换为你自己的数据库ARN和秘钥ARN。然后调用execute_statement_with_column_names函数时传入数据库名、表名和SQL语句,即可获取结果集以及对应的列名。
下一篇:AWS RDS 的理想设置