cx_Oracle和oracledb的爱恨情仇

Linux下安装cx_Oracle,连接oracle数据库 通过python连接oracle数据库,在Linux服务器运行时,缺少cx_Oracle模块,则需要在linux下安装对应的依赖,需要用到的依赖如下:①oracle客户端②cx_Oralce。 阅读详情
AI摘要

Python连接Oracle数据库时,可以选择cx_Oracle和oracledb两个库。oracledb是cx_Oracle的更新版本,具有新功能和一些变化,如命名关键字参数和移除不推荐的功能。两者都由Oracle维护,但未来的发展将侧重于oracledb。使用oracledb需要初始化Oracle客户端库,并配合InstantClient进行连接。建议考虑升级到oracledb以利用新功能和性能优势。

在这里插入图片描述

前言

实习生:我要用python访问oracle,我究竟该用哪个库啊,网上搜的有两个,一个是cx_Oracle另一个是oracledb,这两个有什么区别?
我:话说那是2022年5月一个阴云密布的日子,甲骨文发布了python oracledb驱动程序。与早期的cx_Oracle驱动程序(创建于1999年)一样,该模块允许Python应用程序连接到Oracle数据库,执行SQL和PL/SQL语句,并执行SODA操作。这两个驱动程序都实现了Python数据库API规范2.0版,有很多扩展,只有一些必要的遗漏。该规范的支持允许在流行的Python框架、ORM和SQL生成器包中使用这两个驱动程序。这两个驱动程序都可以从PyPi、conda-forge和各种Linux存储库中安装。它们都由Oracle维护。
实习生:别扯淡了行吗?你就告诉我有什么区别

区别

Python oracledb只是cx_Oracle的最新主要版本,恰好有了一个新名称。可以将其视为cx_Oracle 9,cx_Oracle8.3的继承者。

除了具有新功能外,作为一个主要版本,还有一些变化需要注意:
cx_Oracle中长期不推荐使用的一些功能在python oracledb中不可用;连接函数需要命名关键字参数;如果要继续使用Oracle客户端库(即使用“thick模式”),则必须调用init_oracle_client()方法。

这两个库今后会怎么发展

看看官方的说明:

正如我们在以前的cx_Oracle命名空间下所做的那样,我们将继续增强和维护python oracledb。自2022的1.0.0发布以来,我们已经发布了三个功能版本和各种其他错误修复版本。

还没有看到任何对cx_Oracle 8.3驱动程序进行bug修复的需求。它有着悠久的历史,并且建立在广泛使用的Oracle客户端库之上,非常稳定。cx_Oracle用户一直积极升级,不希望发布小补丁。例如,在cx_Oracle8.0发布后,我们从未被要求为其前身cx_Oracle 7.3创建错误修复补丁版本。这并不是说我们将来不会为cx_Oracle 8.3做这样的事情,但似乎不太可能需要它。python oracledb的采用率非常高。当python oracledb发布时,我们假设几年后(即大约2024年5月),我们将不再考虑发布任何cx_Oracle bug修复版本,具体取决于您的反馈。这仍然是我们的计划。

代码示例

import oracledb
# Connect to the database
# 记得此处要下载instantclient,具体版本需要对应oracle的版本
oracledb.init_oracle_client(lib_dir=r"D:\\data\\oracle\\instantclient_11_2")
conn = oracledb.connect(
    host="10.9.44.xx",
    port=1521,
    user="user",
    password="123456",
    service_name="dbname",
    encoding="utf8"
)
# Create a cursor
cursor = conn.cursor()

# Execute a SELECT statement
cursor.execute('SELECT * FROM tb')

# Fetch the results
results = cursor.fetchall()

# Loop through the results
for row in results:
    print(row)

instantclient

Instant Client是Oracle公司提供的一个轻量级客户端软件包,用于将应用程序连接到远程Oracle数据库。它由一系列的动态链接库(DLL文件)组成,可以在应用程序中动态加载并与Oracle数据库进行通信。

  • Instant Client的设计目标是提供一个简单、可移植和快速部署的解决方案,使开发人员能够以最小的依赖关系连接和访问Oracle数据库。

  • 使用Instant Client可以将Oracle数据库相关的功能打包到应用程序中,而无需安装完整的Oracle客户端。这对于那些不需要所有客户端功能、或者需要在部署环境中保持较小的软件包大小的情况下非常有用。

  • Instant Client提供了与Oracle数据库通信所需的基本功能和库,包括连接管理、SQL执行、数据类型支持和安全功能等。它还支持多种操作系统、多个编程语言和多个版本的Oracle数据库。开发人员可以选择适合自己开发环境和应用程序需求的Instant Client版本。

总结来说,Instant Client是一个独立、轻量级的Oracle数据库客户端软件包,可以帮助开发人员在应用程序中快速、简便地连接和与Oracle数据库进行通信。它提供了基本的数据库功能,并支持多种操作系统和编程语言。

注意:

如果不配置instantclient会报错:

cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "The specified module could not be found". See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help

python连接oracle常用库

  • cx_Oracle
    是Python与Oracle数据库通信的最常用的库之一。它提供了与Oracle数据库进行连接、查询、事务处理等操作的功能。它是使用C编写的,因此在性能和稳定性方面表现出色。
  • pyodbc
    是一个通用的Python数据库接口库,可以用于连接多种类型的数据库,包括Oracle。它使用ODBC(开放数据库连接)作为中间层,允许与各种不同的数据库进行通信。
  • sqlalchemy
    是Python中一个非常强大的数据库工具库,它提供了一套统一的API,用于与多种数据库进行交互,包括Oracle数据库。它可以帮助简化数据库连接和查询操作,并提供ORM(对象关系映射)功能。
  • pyoracle
    是一个基于cx_Oracle的Python库,提供了一些额外的功能和抽象,使连接和操作Oracle数据库更容易。

后记

我鼓励你测试并计划升级到python oracledb,这就是未来的趋势。你可以利用新的(和即将推出的)功能,并从新的(可选的)精简模式的性能优势中获益。当然,如果你愿意,你可以继续使用Oracle Instant Client的“Thick模式”。

python-oracledb——利用python连接Oracle数据库的利器 python-oracledb驱动程序是一个Python扩展模块,可以访问Oracle数据库。它具有支持Python数据库API v2.0规范的全面功能,具有相当多的附加内容和一些排除项。 python-oracledb驱动程序是cx_Oracle 8.3的重命名的主要版本继承者。... 阅读详情

相关推荐

使用cx_Oracle模块将Oracle数据库中的数据导出到CSV文件

在Python中,我们可以使用cx_Oracle模块来连接Oracle数据库,并将数据库中的数据导出到CSV文件。这就是使用cx_Oracle模块将Oracle数据库中的数据导出到CSV文件的方法。其中,username是数据库的用户名,password是密码,connection_string是连接字符串,用于指定数据库的位置和其他连接参数。下面是一个详细的步骤,演示如何使用cx_Oracle模块将Oracle数据库中的数据导出到CSV文件。首先,我们需要安装cx_Oracle模块。

HackQuestR的博客 486

python-oracledb 已率先支持 Oracle 23ai

python-oracledb (以下简称 oracledb) 是 Python cx_Oracle 驱动程序的新名称,如果你仍在使用 cx_Oracle,建议升级到最新版本的 oracledb。本文介绍了如何使用 python-oracle 连接 Oracle Database 23ai,并演示在代码中操作向量类型。下面举个栗子,演示如何使用 oracledb 连接到 Oracle 23ai 数据库。到此, oracledb 已经安装完成,可以看到这里安装的是最新版本 2.2.0。

少安事务所 2167

ESP32IDF 通过 PCA9685控制舵机的程序bug处理

esp32 PCA9685 bug 舵机

ztvzbj的博客 726

【python】cx_Oracle库学习

python连接数据库,cx_Oracle库学习。

MAOZI8的博客 2430

11.15 分析finrl 的框架

11.15 分析finrl 的框架

yueguoqing88的博客 1085

保姆级教程:在Ubuntu 22.04上用Conda搞定nuPlan数据集环境(Python 3.9 + PyTorch)

本文提供了一份详细的Ubuntu 22.04环境下使用Conda配置nuPlan自动驾驶数据集的保姆级教程,涵盖Python 3.9安装、Conda环境管理、PyTorch配置及数据集可视化验证等关键步骤,帮助开发者高效搭建开发环境。

weixin_29061997的博客 255

图文深入理解Oracle DB实例管理

本来这篇打算承接上篇,接着介绍Oracle数据库表的管理的,但考虑到需要实操,在这之前先深入介绍下Oracle DB实例的基本管理,包括一些常用的管理工具和数据库启动过程的各个阶段和几种带选项的关闭方式的会有什么影响。学习知识就得循序渐进,每个知识点揉碎了再彻底消化。

qq_45732829的博客 2154

Arduino程序设计(十四)舵机控制实验(SG90)

本文介绍SG90舵机控制原理及实验,主要内容有:1、介绍SG90舵机;2、舵机0°~180°来回转动;3、串口控制舵机转动固定角度。(1)舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。(2)舵机的转动角度为0~180°,其内部结构包括电机,控制电路和机械结构三部分。电机有三根线引出,分别接VCC、GNG和信号线。

Alice的博客 1万+

Python安装cx_oracle操作

Python安装cx_oracle操作

qq_73428784的博客 7036

SAP采购申请审批策略配置简介

SAP采购申请审批策略配置简介 1、CT04创建特征

我小时候很黑的博客 8162

Davinci配置临界区Exclusive Area

在Exclusive Area专属区域内的代码段执行不会被中断,可以用于保护多个Runnable间的共享资源。Exclusive Area会对RTE的调度策略和配置进行约束。如果两个或多个Runnable指向同一个Exclusive Area,那么只有其中一个Runnable被允许在该Exclusive Area内执行。即这些Runnable在ExlcusiveArea内执行时不能并发运行(相互抢占)。:在完整执行期间,整个runnable都在临界区运行。:执行期间可以进入临界区。

qq_42851449的博客 506

Python使用oracledb模块连接Oracle数据库

python+oracledb=oracleSQL

qq_54855762的博客 7182

第4篇:使用 NModbus 库快速搭建 Modbus TCP 通信(从零开始用 C# 开发 Modbus 上位机)

本文介绍了如何使用 NModbus 库快速搭建 Modbus TCP 上位机通信程序。通过安装 NModbus4 NuGet 包,开发者可以轻松实现 Modbus TCP 连接,无需手动处理底层协议细节。文章详细演示了核心功能实现: 创建 TCP 客户端连接设备 读取保持寄存器(功能码0x03) 写入单个寄存器(功能码0x06) 关闭连接释放资源 提供完整C#示例代码,包含初始化连接、数据读写等关键操作,帮助开发者快速构建Modbus TCP通信应用。相比手动实现,NModbus库大幅简化了开发流程,特别适

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1046

Python连接Oracle数据库:cx_Oracle与oracledb库的比较与选择

Python 访问 Oracle可以通过两种Oracle官方库:旧驱动:cx_Oracle(需要安装Oracle Instant client)新驱动:oracledb(Oracle数据库12.1或更高版本不需要安装 Oracle Instant client)

学习笔记 4143

Vue3 - 最新实现在线预览Excel文件(xls/xlsx)多种方案,解析打开excel电子表格支持服务器链接在线URL形式、调用后端接口获取二进制文件流、文件地址(vue3实现excel预览)

vue3,预览excel文件,xlsx,xls,vue预览Excel表格,vue在线编辑xls文件,预览和编辑,vue3如何新开一页浏览器打开查看,手机h5页面打开在线EXCEL文档,在弹框中加载预览,在指定模态框中显示,基于Vue的Excel文件预览,加载失败白屏,报错没反应,详细示例代码教程,文件预览下载,nuxt3,excel预览插件,xlsx插件预览,纯前端vue中预览excel表格,接口调用的文件如何预览查看,文件url地址,vue移动端实现excel在线预览,vue移动端H5网页excel预览,

🏆 前端领域优质创作者 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

python项目读取oracle数据库方法(cx_Oracle库实现)

python项目读取oracle数据库方法(cx_Oracle库实现)

业精于勤,荒于嬉;行成于思,毁于随 1509

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Python 连接 Oracle 并实现增删改查(cx_Oracle)

Python 连接 Oracle 并实现增删改查(cx_Oracle)

鱼丸丶粗面 5077

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python数据分析工具(三):pymssql的用法

是一个 Python 模块,用于在 Python 程序中连接数据库。它提供了一个简单的接口来执行命令,并处理数据库查询的结果。下面是一些使用的基本步骤和示例。安装首先,你需要确保已经安装了。你可以通过。

2401_85737382的博客 1061

图文深入介绍Oracle DB link(二)

本文承接上篇继续深入介绍Oracle DB link,主要介绍如何配置DB link的连接及确保连接的安全。

qq_45732829的博客 3810

oracledb连接数据库和提交方法

oracledb配置方法 首先按照要求先配置客户端和环境变量 var oracledb = require(‘oracledb’); oracledb.getConnection( { user : "",//用户名 password : "",//密码 connectString : "",//端口

weixin_43948724的博客 760

Python cx_Oracle

cx_Oracle 是 Python 的一个扩展模块,它允许 Python 程序与 Oracle 数据库进行交互。使用 cx_Oracle,Python 开发者可以编写能够连接到 Oracle 数据库、执行 SQL 查询和命令、处理结果集以及处理数据库事务的脚本和程序。cx_Oracle 提供了丰富的 API 和功能,使得 Python 与 Oracle 数据库之间的交互变得简单而高效。cx_Oracle 是一个功能强大的 Python 扩展模块,它允许 Python 程序与 Oracle 数据库进行交互。

Python老吕的博客 2060

python中安装cx_Oracle模块

pytho安装cx_Oracle模块

weixin_44100044的博客 9296

python 安装cx_oracle

cx_Oracle是一个Python 扩展模块,通过使用所有数据库访问模块通用的数据库 API来实现 Oracle 数据库的查询和更新。cx_Oracle 的开发历时多年,涵盖了大多数需要在 Python 中访问 Oracle 的客户的需求。db_cursor.executemany(sql_cmd, [(15, '王五2', 12, datetime(2017, 9, 1, 12, 40, 12)),(16, '赵六', 12, datetime(2017, 9, 1, 12, 40, 12))])

qqQi_的博客 2523

Oracle基础-数据库连接篇

Oracle 使用 DBLink

酸菜鱼 317

python 3.11:cx_Oracle 将被oracledb替代

cx_oracle找不到

weixin_47440383的博客 5110

如何快速掌握python-oracledb:零依赖连接Oracle数据库的完整指南

`python-oracledb` 是一款由Oracle官方维护的轻量级Python驱动,可让开发者无需额外安装Oracle客户端库即可直接连接Oracle数据库。它完全符合Python DB API 2.0规范,支持同步与异步编程模式,兼具高性能与易用性,是cx_Oracle的全新升级版本。 ## ???? 为什么选择python-oracledb?核心优势解析 ### ✅ 零依赖架构,开箱即用...

gitblog_00018的博客 678
上一篇: 通俗易懂理解spark的DAG
下一篇: 详解spark部署模式client和cluster
SunnyRivers
SunnyRivers 领域专家: 大数据技术领域 领域专家: 大数据技术领域
博客等级 码龄10年 2万+粉丝 598原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SunnyRivers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值