使用 oracledb 从 awsglue python shell 更新 Onprem oracle 表

问题描述 投票:0回答:1

我有一个用例需要使用 awsglue python shell 更新本地表。 请注意,我想在厚模式下使用 python-oracledb

  1. 我已经安装了oracledb
  2. 我的 dba 已为我的本地表设置了一个 jdbc URL,可从 AWS 云访问
  3. 当我尝试运行 python shell 作业时,它抛出数据库错误 DPY-4027:没有配置目录来搜索 tnsnames.ora

据我了解,它不应该查找“tnsnames.ora”,因为我正在使用 jdbc url 。 寻找使用精简网址的代码的方法是什么 下面是我写的代码。有任何建议或错误请告诉我

import sys
import boto3
import oracledb
import ast
    # Oracle connection details using Easy Connect string

session = boto3.session.Session()
client = session.client(service_name='secretsmanager')   

    
def get_secret(secret_name):
    # Create a Secrets Manager client
    try:
        get_secret_value_response = client.get_secret_value(SecretId=secret_name)
        return get_secret_value_response
    except Exception as e:
        raise 


def update_table(table_name):
    try :
        print("im here update table")
        cred=get_secret("my_secret")
        cred=ast.literal_eval(cred["SecretString"])
        print(f"credentials {cred}")
        user =cred["username"]
        password =cred["password"]
        conn_str = 'jdbc:oracle:thin://@my_host:my_port/my_service'
        conn = oracledb.connect(user=user, password=password,dsn=conn_str)
        cursor = conn.cursor()
        cursor.execute("UPDATE my_table SET flag ='N' WHERE column ='xyz'")
        conn.commit()
        cursor.close()
        conn.close()
        return {
            'statusCode': 200,
            'body': json.dumps('Update successful')
        }
    except Exception as e:
        raise 
    
    
if __name__ == '__main__':
    
    return_code = update_table("my_table")
  1. 我已经安装了oracledb
  2. 我的 dba 已为我的本地表设置了一个 jdbc URL,可从 AWS 云访问
  3. 当我尝试运行 python shell 作业时,它抛出数据库错误 DPY-4027:没有配置目录来搜索 tnsnames.ora
  4. 我检查了 url 连接性,它们看起来都很好,因为在其他作业中使用了相同的 url
python-3.x database amazon-web-services oracle
1个回答
0
投票

Python 不是 Java,连接字符串也不同。 请参阅 python-oracledb 文档 JDBC 和 Oracle SQL Developer 连接字符串,了解如何将 JDBC 连接字符串映射到 python-oracledb 可用的内容。

您几乎肯定想使用:

 conn_str = 'my_host:my_port/my_service'

另请参阅 使用 python-oracledb 'DPY-4027:没有配置目录来搜索 tnsnames.ora' 是什么意思

© www.soinside.com 2019 - 2024. All rights reserved.