要使用AWS Redshift数据API执行语句,需要使用正确的端口。默认情况下,Redshift数据API使用的端口是通过TLS(Transport Layer Security)进行加密的443端口。以下是一个使用正确端口的代码示例:
import psycopg2
import boto3
# 创建Redshift数据API客户端
client = boto3.client('redshift-data')
# 执行SQL语句
def execute_sql(sql):
response = client.execute_statement(
ClusterIdentifier='your-cluster-identifier',
Database='your-database-name',
DbUser='your-db-username',
SecretArn='your-secret-arn',
Sql=sql
)
# 获取查询结果
query_id = response['Id']
response = client.describe_statement(Id=query_id)
# 等待查询完成
status = response['Status']
while status == 'RUNNING' or status == 'QUEUED':
response = client.describe_statement(Id=query_id)
status = response['Status']
# 获取查询结果
response = client.get_statement_result(Id=query_id)
columns = response['ColumnMetadata']
rows = response['Records']
# 打印查询结果
for row in rows:
values = row['Data']
for i, value in enumerate(values):
column_name = columns[i]['name']
print(f'{column_name}: {value}')
print('---')
# 执行示例SQL语句
execute_sql('SELECT * FROM your_table')
请确保将代码中的以下参数替换为您自己的值:
此代码示例使用了boto3库来创建Redshift数据API客户端,并使用execute_statement方法执行SQL语句。查询结果通过get_statement_result方法获取,并以逐行的方式进行打印。
请确保安装了boto3和psycopg2库,并使用适当的身份验证信息和Redshift集群配置替换示例代码中的占位符。