使用 Python 连接到 Oracle 数据库

Connection to Oracle DB with Python

我正在尝试使用 Python 连接到我的 Oracle 数据库。 我目前正在使用 cx_Oracle 连接它,但不起作用...

#!/usr/bin/python3
import cx_Oracle

dsn_tns = cx_Oracle.makedsn('Host Name', 'Port Number', service_name='Service Name')

conn = cx_Oracle.connect(user=r'user', password='password', dsn=dsn_tns)

c = conn.cursor()
c.execute('select * from person')

conn.close()

错误:

conn = cx_Oracle.connect(user=r'g_user', password='G_user', dsn=dsn_tns)
cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

我访问了网站,但没有找到任何有用的信息...

我的代码中有什么地方错了吗?

确保您已安装正确的 oracle 客户端(您可以从此处“https://www.oracle.com/in/database/technologies/instant-client/winx64-64-downloads.html”找到 oracle 客户端包并添加在安装 python 的文件夹中下载文件夹,然后将此位置(您的客户端包文件夹的位置)添加到系统的环境变量中。希望这会起作用。

我建议您首先检查 OS、Python 和 Oracle Instant Client 体系结构的兼容性:

import platform
platform.architecture()

那么,我绝对建议您在 jupyter notebook 中设置 Oracle Instant Client:

import os
os.environ["PATH"] = "Complete Location of Instant Client Folder" + ";" + os.environ["PATH"]

来源:cx_Oracle error. DPI-1047: Cannot locate a 64-bit Oracle Client library

你的错误是

DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory".

在启动 Python 进程之前,您的操作系统搜索路径中需要 Oracle Linux 64 位客户端二进制文件

最简单的方法是安装免费的 Oracle Instant Client。使用最新的 19c 版本 - 它可以让您连接到 Oracle DB 11.2 或更高版本。安装说明位于下载页面的底部。如果您安装 RPM,一切都已为您配置好。如果您安装 ZIPS,我更喜欢使用 ldconfig 设置库搜索路径,这也在说明中显示。