绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Oracle-3-操作【Python-cx_oracle】
2023-05-29 17:39:17

###

一、cx_oracle

1 简介

通过Python扩展模块cx_Oracle访问Oracle数据库

cx_Oracle通常使用 pip 安装

Oracle 客户端库需要单独安装

2 特点

支持多个 Oracle 客户端和数据库版本

执行 SQL  PL/SQL 语句

广泛的 Oracle 数据类型支持,包括大型对象(CLOB  BLOB)和 SQL 对象的绑定

连接管理,包括连接池

Oracle 数据库高可用性功能

支持 Python 3.6 及更高版本。旧版本的cx_Oracle可以与以前的Python版本一起使用

支持 Oracle Client 11.2121819  21Oracle 的标准跨版本互操作性允许轻松升级和连接到不同的 Oracle 数据库版本。

连接到 Oracle 数据库 9.21011121819  21(取决于所使用的 Oracle 客户端版本)。

SQL  PL/SQL 执行。基础 Oracle 客户端库具有显著的优化功能,包括压缩提取、预提取、客户端和服务器结果集缓存以及具有自动调整功能的语句缓存。

广泛的 Oracle 数据类型支持,包括大型对象支持(CLOB  BLOB)。

JSON 数据类型支持。

阵列操作可实现高效的 INSERT  UPDATE

引用光标支持。

支持可滚动光标。来回浏览查询结果。

获取 PL/SQL 隐式结果。从 PL/SQL 轻松返回查询结果。

事务管理。

特权连接。

外部身份验证。

数据库启动和关闭。

运行实例

# query.py

import cx_Oracle

# Establish the database connection 建立数据库连接
# 连接本地数据库无需加 dsn
# 连接外部数据库时需要 dsn="数据库地址/实例名"(如199.166.5.456/orcl)
# 此处“/”时字符,不是“或”
connection = cx_Oracle.connect(user="hr", password=userpwd,
                               dsn="dbhost.example.com/orclpdb1")

# Obtain a cursor 获取游标
cursor = connection.cursor()

# Data for binding 绑定数据
manager_id = 145
first_name = "Peter"

# Execute the query 执行查询
sql = """SELECT first_name, last_name
         FROM employees
         WHERE manager_id = :mid AND first_name = :fn"""
cursor.execute(sql, mid=manager_id, fn=first_name)

# Loop over the result set遍历结果集
for row in cursor:
    print(row)

二、连接Oracle数据库

1 连接方式

cx_Oracle使用搜索启发式方式动态加载 Oracle 客户端库。
仅加载找到的组库。
这些库可以位于 Oracle Instant Client 的安装中、完整的 Oracle Client 安装中,也可以位于 Oracle 数据库安装中(如果 Python 与数据库在同一台计算机上运行)。
Oracle Client 和 Oracle Database 的版本不必相同。

2 具体的连接操作

connection = cx_Oracle.connect(user="hr", password="hr",dsn="dbhost.example.com/orclpdb1")
#本地连接似乎需要dsn部分
#连接外部数据库时需要dsn部分:例dsn="192.168.3.110/orcl"(数据库地址和名称)

补充:cx_oracle中的常见错误及解决

1 数据库连接失败

cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 32-bit Oracle Client library
此处为找不到32Oracle客户端

一般是由于Pythoncx_oracle库Oracle客户端位数不相同造成的
# 在SQL中执行select * from v$version;
# 可用来查询Oracle客户端位数

本文资料借鉴了Oracle公司官网有关Oracle和cx_oracle库的相关内容。

###


分享好友

分享这个小栈给你的朋友们,一起进步吧。

oracle
创建时间:2022-01-06 15:31:29
oracle
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • gaokeke123
    专家
戳我,来吐槽~