Ian*_*ato 5 cx-oracle python-3.x ubuntu-18.04
我正在使用cx_oracle 7和python 3.6.7建立到oracle 11g的远程服务器上的连接。我在Ubuntu 18.04中的操作系统
我已经用libclntsh.so安装了Oracle Instant Client库,但没有得到预期的输出。
这是我用来连接到Oracle数据库的代码
connection = cx_Oracle.connect("username/password@host/port")
print (connection.version)
connection.close()
Run Code Online (Sandbox Code Playgroud)
当脚本运行时,我希望获得连接版本,而不是得到以下错误消息
文件“ script.py”,第13行,连接= cx_Oracle.connect(“ username / password @ host / port”)cx_Oracle.DatabaseError:DPI-1047:无法找到64位Oracle Client库:“ libclntsh.so:无法打开共享对象文件:没有这样的文件或目录。请参阅 https://oracle.github.io/odpi/doc/installation.html#linux获取帮助
Mik*_*tos 18
我面临着完全相同的问题。这对我有用:
$ sudo mkdir -p /opt/oracle
$ cd /opt/oracle
$ sudo unzip /opt/oracle/instantclient-basic-linux.x64-19.8.0.0.0dbru.zip
Run Code Online (Sandbox Code Playgroud)
$ sudo apt-get install libaio1
Run Code Online (Sandbox Code Playgroud)
LD_LIBRARY_PATH $ vim ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
.bashrc文件中 export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_8:$LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
.bashrc文件后,我获取了它: $ source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
然后我的 Python 脚本又可以正常工作了。
另请参阅cx_oracle 文档
Ian*_*ato 16
经过更多研究,我从Ubuntu 社区获得了解决方案,在您安装了 oracle 即时客户端后,您必须按如下方式集成 oracle 库:
导出 LD_LIBRARY_PATH=/usr/lib/oracle/
<version>/client(64)/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}Linux x86_64 12.1 版本的示例可以是:
导出 LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
其中<version> 表示你的oracle Instant-client的版本,例如11.2、12.2
连接参数应该如下
connection = cx_Oracle.connect("username/password@host/service_name e.g orcl")
要获取侦听器/服务名称,请在 oracle sqlplus 中键入以下内容
SQL> show parameter local_listener
Run Code Online (Sandbox Code Playgroud)
VALUE 下的文字是您的 listener/service_name。
对于 Ubuntu Linux 20.04 LTS 服务器,对我有用的(这可能很明显,但对我来说不是!)是 1)当您执行导出时,您需要在您打算运行连接到 Oracle 的 app/ 命令的文件夹中从,虽然这有效,但在关闭到 EC2 服务器的 SSH 终端后,不再可用,这已通过 2) 将其添加到 ~/.bashrc 完整步骤:
解压 Oracle 即时客户端,例如:/opt/oracle/instantclient_19_9
sudo apt-get install libaio1
cd ~/your-project-folder
export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_9
Run Code Online (Sandbox Code Playgroud)
然后我添加到 ~/.bashrc 中:
sudo nano ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
并添加这一行:
export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_9
Run Code Online (Sandbox Code Playgroud)
并在终端运行:
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
我的安装在“ubuntu”用户下的 EC2 服务器上按预期工作,并安装了必要的 nvm/nodeJs
在 nodeJs 中,示例连接可能类似于:
const testOracleConnection = async () => {
let conn;
try {
conn = await oracledb.getConnection(oracleConfig);
const query1 = 'select ID, anotherColumn from someTable where ID = 1111';
const result = await conn.execute(query1);
console.log(result);
} catch (err) {
console.error(err);
} finally {
if (conn) {
try {
await conn.close();
} catch (err) {
console.error(err);
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4911 次 |
| 最近记录: |