如何配置Python环境通过cx_Oracle连接数据库?

冬雪小哥_3844

冬雪小哥_3844

2026-11-04

719人浏览

原创

不能只 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 成功。

如何配置python环境通过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 音频与音乐分析库
librosa Python 音频与音乐分析库

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 的核心概念和高级技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

oracle python 数据库

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

2023.07.20

1851

4

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

2023.07.25

5064

7

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.31

1809

3

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

2023.08.03

30497

23

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3627

5

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.04

3647

5

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1243

5

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

616

4

python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2823

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程