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

Mac系统下Python连接Oracle数据库遭遇ORA-12537: TNS:connection closed错误的求助

Mac系统下Python连接Oracle数据库遭遇ORA-12537: TNS:connection closed错误的求助

我现在在Mac系统上尝试连接Oracle数据库,我们团队平时用Java开发,连接方式是通过SSH隧道连到远程主机,同时使用Oracle数据库钱包,这些配置在Java的属性文件里都能正常工作。

现在我想在Python里用同样的SSH隧道和钱包来连接数据库,查了不少资料后写了下面的代码:

import oracledb
import os


# Values
local_port = 1522
service_name = "mydb_high"
username = "read_only"
password = "pwd"
wallet_path = "/path/to/wallet/folder"
lib_dir = '/path/to/oracle_client/folder'

# Set the TNS_ADMIN environment variable to your wallet directory
os.environ["TNS_ADMIN"] = wallet_path

# Initialise Oracle Client
try:
    oracledb.init_oracle_client(lib_dir=lib_dir)
    
except Exception as e:
    print("Error initializing Oracle Client:", e)

dsn = "127.0.0.1:1522/" + service_name

try:
    # Connect to the database
    
    connection = oracledb.connect(
        user=username,
        password=password,
        dsn=dsn
    )
    
    print("Connected to Oracle Database")

    # Create a cursor object to execute queries
    cursor = connection.cursor()

    # test the connection
    cursor.execute("SELECT sysdate FROM dual")
    result = cursor.fetchone()
    print("Current Date/Time from Oracle DB:", result[0])

except oracledb.DatabaseError as e:
    error, = e.args
    print(f"Database connection failed: {error.message}")

finally:
    if 'connection' in locals() and connection:
        connection.close()
        print("Connection closed.")

但是运行这段代码时,我遇到了ORA-12537: TNS:connection closed错误。我在网上查了这个错误,大部分解决方案都说和连接字符串或者钱包文件不正确有关,但同一个钱包文件在SQL Developer和Java应用里都能正常使用。

其中一个解决方案建议我用终端的sqlplus命令测试Oracle客户端连接:

sqlplus 127.0.0.1:1522/mydb_high

执行这个命令后,我又遇到了ORA-12162: TNS:net service name is incorrectly specified错误。

我的钱包目录下的sqlnet.ora文件原本是这样的:

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
SSL_SERVER_DN_MATCH=no

我后来把它改成了:

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/path/to/wallet/folder")))
SSL_SERVER_DN_MATCH=yes

但修改后问题还是没有解决,有没有人能帮我看看这是怎么回事?

备注:内容来源于stack exchange,提问作者Bhavin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 18:14:49