百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

python-oracledb——利用python连接Oracle数据库的好用方法

moboyou 2025-03-07 17:12 37 浏览

这篇文章最早发布在CSDN了,最近想尝试使用一下头条,重新转移过来了。

背景介绍

之前使用的数据库一直是MySql,偶尔使用PostgreSQL,都是利用的数据库连接池使用;

最近需要在Oracle数据库取数据,因此查找了一下连接的方法。网上大部分都是给出的使用cx_Oracle库进行连接,方法也比较简单。但是在进一步了解的时候发现cx_Oracle库 的最新版本已经升级为python-oracledb了;于是简单探究了一下。

python-oracledb驱动程序是一个Python扩展模块,可以访问Oracle数据库。它具有支持Python数据库API v2.0规范的全面功能,具有相当多的附加内容和一些排除项。

python-oracledb驱动程序是cx_Oracle 8.3的重命名的主要版本继承者。

python-oracledb功能亮点:

  1. 从 PyPI 轻松安装
  2. 支持多个 Oracle 数据库版本;支持 Python 数据库 API v2.0 规范执行 SQL 和 PL/SQL 语句
  3. 广泛的 Oracle 数据类型支持,包括 JSON、大型对象 ( 和 ) 和 SQL 对象的绑定CLOBBLOB连接管理,包括连接池Oracle 数据库高可用性功能
  4. 充分利用 Oracle 网络服务基础架构,包括加密的网络流量

python-oracledb 与 cx_Oracle 使用方法对比

  • cx_Oracle使用方法
import cx_Oracle

# 设置连接参数
connection = cx_Oracle.connect(user="hr", password="welcome",
                               dsn="localhost/orclpdb1")

cursor = connection.cursor()
cursor.execute("""
        SELECT first_name, last_name
        FROM employees
        WHERE department_id = :did AND employee_id > :eid""",
        did = 50,
        eid = 190)
for fname, lname in cursor:
    print("Values:", fname, lname)
  • python-oracledb的使用方法
python -m pip install oracledb

默认情况下,python-oracledb在“精简”模式下运行,该模式直接连接到Oracle数据库。此模式不需要 Oracle 客户端库。但是,当python-oracledb使用它们时,可以使用一些其他功能。Python-oracledb在使用Oracle客户端库时被称为“Thick”模式。这两种模式都具有支持 Python 数据库 API v2.0 规范的全面功能。

从默认的精简模式更改为Thick模式需要添加对
oracledb.init_oracle_client() 的调用;当调用init_oracle_client() 时,python-oracledb 使用搜索启发式方式动态加载 Oracle Client 库,使用方法:

import oracledb

oracledb.init_oracle_client(lib_dir=r"D:\instantclient_21_6")
  • 独立链接模式

一般方法:

import oracledb
import getpass

userpwd = getpass.getpass("Enter password: ")

connection = oracledb.connect(user="hr", password=userpwd,
                              dsn="dbhost.example.com/orclpdb")

# 其他功能代码

# 关闭连接
connection.close()

或者可以使用以下方法:

username="hr"
userpwd = os.environ.get("PYTHON_PASSWORD")
host = "localhost"
port = 1521
service_name = "orclpdb"

dsn = f'{username}/{userpwd}@{port}:{host}/{service_name}'
connection = oracledb.connect(dsn)

# 其他功能代码

# 关闭连接
connection.close()

使用连接池的方法

# 初始化连接
pool = oracledb.create_pool(user="hr", password=userpwd, dsn="dbhost.example.com/orclpdb",
                            min=2, max=5, increment=1)

# Acquire 连接到池
connection = pool.acquire()

# 使用连接池
with connection.cursor() as cursor:
    for result in cursor.execute("select * from mytab"):
        print(result)

# 释放连接池
pool.release(connection)

# 关闭连接池
pool.close()

相关推荐

php宝塔搭建部署实战SDCMS蓝色通用宽屏企业网站源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的SDCMS蓝色通用宽屏企业网站源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+...

PHP Laravel定时任务Schedule

前提:本文方法是利用Linux的crontab定时任务来协助实现Laravel调度(Mac也一样)。一、首先添加Crontab定时任务,这里只做简单介绍:用命令crontab-e添加如下内容**...

PHP函数大全:从Array到Zip,你需要了解的所有函数

PHP函数大全:从Array到Zip,你需要了解的所有函数在PHP开发中,函数是非常重要的工具。它们提供了各种功能和操作,帮助我们更高效地处理数据和实现各种功能。在本文中,我们将介绍PHP中一些常用的...

php宝塔搭建部署实战SDCMS蓝色系列包装行业网站源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的SDCMS蓝色系列包装行业网站源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+...

php宝塔部署实战月老盲盒H5交友盲盒网站源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的月老盲盒H5交友盲盒网站源码。技术架构PHP7.2+nginx+mysql5.7+JS+CSS+HTMLcn...

php宝塔部署实战OneKeyAdmin插件化管理系统源码

大家好啊,我是测评君,欢迎来到web测评。有个朋友发消息问我,能不能录制一期开源OneKeyAdmin插件化CMS管理系统的搭建视频教程,看了一下,搭建的方式还是很简单的,本期给大家分享一下怎么在宝塔...

php宝塔搭建部署实战海洋cms视频内容管理系统源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的海洋cms视频内容管理系统源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+J...

php宝塔搭建部署网盘目录搜索系统thinkphp源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的网盘目录搜索系统thinkphp源码,这也是一个朋友之前分享给我的,说不会搭建,看了一下,还是很简单的,感兴趣的朋友可以自行下载...

php宝塔搭建部署实战PESCMSTEAM团队任务管理系统源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的PESCMSTEAM团队任务管理系统源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5....

php宝塔搭建部署实战科技创业园区网站源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的科技创业园区网站源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+JS+C...

在CentOS7系统源码安装Nginx+MySQL+PHP+Go

以下安装说明仅供参考,请根据实际情况修改配置,进行软件编译安装软件安装也可以参考阿里云/腾讯云的建站教程:https://help.aliyun.com/zh/ecs/use-cases/build-...

2021最新湖北电视台节目源PHP代理源码

强调下这需要要PHP服务器来运行代码,奈何世人只爱鱼,不爱渔。自己动手对大部分人还是一个坎。id频道439湖北美嘉购物438湖北垄上437湖北教育436湖北生活435湖北影视434湖...

教你搭建自己的问答系统,在java环境上运行php项目

最近公司需要一款问答系统,方便我们平时在这套系统上面积累经验于是在网上找到这款Tipask问答系统。Tipask问答系统是一款开放源码的PHP仿百度问答系统。以国人的使用习惯为设计理念,采用MVC构架...

php宝塔搭建实战部署响应式房产置业公司网站php源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的响应式房产置业公司网站模板php源码,也是一个朋友很早之前分享给我的,说不会搭建,让我帮忙录制一期教程,趁着今天有空,简单的录制...

php宝塔搭建部署实战易优企业官网系统源码

大家好啊,我是测评君,欢迎来到web测评。本期给大家带来一套php开发的易优企业官网系统源码,感兴趣的朋友可以自行下载学习。技术架构PHP7.2+nginx+mysql5.7+JS+C...