不能只 pip install cx_Oracle 就完事——缺 Instant Client 会直接报 DPI-1047 或 ORA-24550;必须手动下载匹配版本的 Basic 包(非 Basic Light),解压至无空格无中文路径,Windows 加 bin 目录到 PATH、Linux/macOS 加 lib 目录到 LD_LIBRARY_PATH,并重启终端验证 import cx_Oracle 成功。

不能只 pip install cx_Oracle 就完事——缺 Instant Client 会直接报 DPI-1047 或 ORA-24550
Instant Client 下载和 PATH 配置是硬门槛
cx_Oracle 是基于 Oracle 客户端 C 库(OCI)的封装,它不自带 oci.dll(Windows)或 libclntsh.so(Linux),必须手动下载 Instant Client 并让系统能“看见”它。
- 只下
Basic包(不是 Basic Light),64 位 Python 就必须配 64 位 Instant Client,版本建议选19.21或21.10(长期支持、兼容性稳) - 解压路径必须无空格、无中文,例如
C:\oracle\instantclient_21_10;Linux/macOS 要把该路径加进LD_LIBRARY_PATH(不是PATH) - Windows 下把
C:\oracle\instantclient_21_10\bin加进系统级PATH,改完后**必须重启所有终端和 IDE**,否则 Python 进程加载不到 DLL - 验证方式:新开命令行,运行
python -c "import cx_Oracle; print(cx_Oracle.version)";成功输出版本号才算过这一关
连接字符串写法和 service_name / SID 区别
Oracle 的连接标识容易混淆:service_name 和 SID 不是同一个东西,用错会导致 ORA-12514: TNS:listener does not currently know of service requested。
librosa 是一个用于音频和音乐分析的 Python 库。它提供了特征提取、频谱分析、节拍跟踪、起始检测和音频可视化的工具,基于 NumPy 和 SciPy 构建,用于科学音频计算。
- 现代 Oracle 数据库(12c+)默认启用
service_name,它由数据库自动注册,格式通常是ORCLCDB.localdomain或XE -
SID是实例名,老版本常用,现在多数场景已不推荐;如果 DBA 给你的是tnsnames.ora片段,注意看(SERVICE_NAME = ...)还是(SID = ...) - 连接字符串三种等效写法:
cx_Oracle.connect("user/pass@host:1521/ORCLCDB")cx_Oracle.connect(user="user", password="pass", dsn="host:1521/ORCLCDB")
tns = cx_Oracle.makedsn("host", 1521, service_name="ORCLCDB"); cx_Oracle.connect("user", "pass", tns)
中文乱码和 ORA-24550 崩溃问题
不处理编码和连接生命周期,程序可能跑着跑着就崩,或者查出来一堆问号。
- 中文显示/插入失败?在
import cx_Oracle前加这句:os.environ["NLS_LANG"] = "SIMPLIFIED CHINESE_CHINA.AL32UTF8"(注意不是 UTF-8,是AL32UTF8) - 进程退出时报
ORA-24550: signal received: Exception code=0xc0000005?说明连接对象没释放;务必用conn.close(),更稳妥的是用上下文管理器:with cx_Oracle.connect(...) as conn: # do work # conn 自动 close - 如果用 SQLAlchemy,URL 中要显式指定 encoding:
oracle+cx_oracle://user:pass@host:1521/XE?encoding=UTF-8&coerce_to_unicode=True
最常被跳过的其实是环境变量重载和 NLS_LANG 设置——这两个点不卡在开发机上,但一上测试服务器就集体失效。别信“本地能跑就行”,PATH 和环境变量得在目标环境里逐条验证。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










