Моя команда обычно работает на Java, поэтому для разработки. мы обычно делаем это для подключения к базе данных в Java. Мы подключаемся к ssh-туннелю, который позволяет нам подключиться к удаленному хосту. И у нас есть кошелек oracle db, файл свойств которого мы упомянули.
Итак, с помощью этого ssh-туннеля и кошелька я также пытаюсь подключиться к Python. Просматривая различные ресурсы в Интернете, я создал приведенный ниже код.
Код: Выделить всё
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.")
одно из решений попросило меня проверить соединение oracle_client с помощью sqlplus из терминала.
Код: Выделить всё
sqlplus 127.0.0.1:1522/mydb_high
ORA-12162: Имя службы TNS:net неверно указан
Мой файл 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
Можете ли вы мне помочь с этим?
Подробнее здесь: https://stackoverflow.com/questions/792 ... ion-closed