You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python连接AWS上的Oracle SQL:host与service_name配置疑问

解决AWS Oracle数据库连接的host与service_name取值问题

1. 如何获取host值

  • 直接用AWS RDS Oracle实例的**端点(Endpoint)**就行。打开AWS控制台的RDS服务,找到你的Oracle实例,进入"连接与安全性"标签页,复制完整的端点地址填到host变量里。

2. 如何获取service_name值

  • AWS RDS Oracle的service_name固定格式是:[你的数据库名称].[实例所在AWS区域].rds.amazonaws.com
    • 数据库名称是你创建实例时指定的DB名称,在RDS控制台的"配置"标签里能找到
    • 区域比如是us-east-1、ap-southeast-1这类,同样在实例详情里能看到
  • 也可以用SQL查询验证:成功连接数据库后执行SELECT sys_context('userenv','service_name') FROM dual;,就能拿到准确的service_name

修正后的Python连接脚本

import cx_Oracle

# 替换为你的实际信息
username = '数据库用户名'
password = '数据库密码'
host = 'xxx.xxx.xxx.xxx.us-east-1.rds.amazonaws.com'  # 复制RDS实例端点
port = '1521'  # Oracle默认端口,若修改过则填新端口
service_name = 'mydb.us-east-1.rds.amazonaws.com'  # 按格式拼接或查询得到

dsn = cx_Oracle.makedsn(host, port, service_name=service_name)

try:
    connection = cx_Oracle.connect(username, password, dsn)
    cursor = connection.cursor()
    
    query = "SELECT * FROM your_table"
    cursor.execute(query)
    
    for row in cursor:
        print(row)
finally:
    # 确保资源正确释放
    if 'cursor' in locals() and cursor:
        cursor.close()
    if 'connection' in locals() and connection:
        connection.close()

额外注意事项

  • 检查你的机器(本地/EC2)的安全组规则,是否允许访问RDS实例的对应端口(默认1521)
  • 用户名是创建Oracle实例时设置的主用户名,不是你的AWS账号用户名

内容的提问来源于stack exchange,提问作者Lunarlife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:52:24