使用 oracledb 的 dsnless 连接

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

使用 VBA,我可以通过以下方式与 Oracle 建立

dsnless
连接。

Driver={Oracle in OraClient21Home1};DBQ=<<string_returned_from_tnsping>>;User Id=fake_user;Password=fake_password;

有没有类似的方法可以在Python中使用

oracledb
做同样的事情?

python oracle connection-string python-oracledb
1个回答
0
投票
  • 对 Oracle 数据库主目录中的库使用厚模式
  • 连接时不要传递DSN参数;这将获取环境 ORACLE_SID
import os
import platform

import oracledb

ld = None  # On Linux, pass None
if platform.system() == 'Darwin':
    ld = str(os.environ.get('HOME'))+'/Downloads/instantclient_23_3'
elif platform.system() == 'Windows':
    ld = r'C:\oracle\instantclient_19_23'
oracledb.init_oracle_client(lib_dir=ld)
print('Using Thick mode')

un = 'cj'
pw = 'cj'

with oracledb.connect(user=un, password=pw) as connection:
    with connection.cursor() as cursor:
        sql = """select systimestamp from dual"""
        for (r,) in cursor.execute(sql):
            print(r)

如果您将旧的 Oracle 环境变量

TWO_TASK
设置为连接字符串,这实际上也适用于远程数据库的 Instant Client。

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