【问题标题】:cx_Oracle: How do I connect to Oracle when you use a Wallet?cx_Oracle:使用 Wallet 时如何连接到 Oracle?
【发布时间】:2020-08-05 19:47:21
【问题描述】:

这是con = cx_Oracle.connect('/@database_name')文件中的代码。

这是为使用我的 oracle 钱包而设置的,但由于某种原因它无法正常工作(我的登录被拒绝)。如何在这行代码中输入我的用户名和密码? con = cx_Oracle.connect('/@database_name')

【问题讨论】:

  • 有些钱包(比如 Oracle Cloud 的钱包)只是用于加密,并没有嵌入数据库用户名/密码,因此您在连接时仍需要指定数据库用户名和密码。更详细地更新您的问题,以便我们提供帮助。

标签: python oracle cx-oracle oracle-wallet


【解决方案1】:

你应该看看

https://cx-oracle.readthedocs.io/en/latest/user_guide/connection_handling.html#establishing-database-connections

要使用带有cx_Oracle的钱包,首先需要配置钱包,创建sqlnet.ora和tnsnames.ora文件,并且需要使用dsn属性

connection = cx_Oracle.connect(dsn="mynetalias", encoding="UTF-8")

mynetalias 是 tnsnames.ora 中的 TNS 条目

mynetalias =
(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = yourhost )(PORT = yourport))
    (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = yourservicename)
    )
)

确保配置了 sqlnet.ora 以使用钱包

WALLET_LOCATION =
(SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
        (DIRECTORY = /your_wallet_path_directory)
    )
)
SQLNET.WALLET_OVERRIDE = TRUE

【讨论】:

    【解决方案2】:

    你可以在下面使用,

    import cx_Oracle
    ip = '192.168.0.1'
    port = 1521
    service_name = 'my_service'
    dsn = cx_Oracle.makedsn(ip, port, service_name=service_name)
    
    db = cx_Oracle.connect('user', 'password', dsn)
    

    【讨论】:

    • 我相信问题是关于如何将cx_Oracle与Oracle Wallet一起使用,虽然标题不是很清楚。
    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 2018-08-08
    • 2021-08-06
    • 2018-12-13
    • 2020-02-06
    • 1970-01-01
    • 2010-09-19
    相关资源
    最近更新 更多