python-oracledb 已率先支持 Oracle 23ai

python-oracledb 介绍

python-oracledb (以下简称 oracledb) 是 Python cx_Oracle 驱动程序的新名称,如果你仍在使用 cx_Oracle,建议升级到最新版本的 oracledb。

oracledb 驱动程序是一个开源模块,使 Python 程序能够访问 Oracle 数据库。默认情况下,oracledb 使用 Thin 模式,不需要依赖 Oracle 客户端类库。

该模块目前支持 Python 3.7 到 3.12,可用于 Oracle 数据库 23ai, 19c, 12c 和 11gR2 等版本。

alt

oracledb 最新版本为 2.2.0,以支持 23ai 的如下特性:

  1. 支持 VECTOR 数据类型。
  2. 支持隐式连接池,DRCP (数据库驻留连接池) 和 PRCP (代理驻留连接池),通过新参数 pool_boundary 启用。
  3. 为从 OCI 云网络连接到 Oracle Autonomous Database Serverless (ADB-S) 的应用程序添加了对 TCP Fast Open 的支持,通过新的 use_tcp_fast_open 参数启用。
  4. 增加了 oracledb.JsonId 类,以表示存储在本机集合中的文档的 _id 属性中由 SODA 返回的 JSON ID 值。
  5. 增加了对 23ai JSON 功能的支持,并允许字段名称具有超过 255 个 UTF-8 编码字节。
  6. 增加了 SQL 域的属性 FetchInfo.domain_schemaFetchInfo.domain_nameFetchInfo.annotations 以及与要获取的列关联的注释。
alt

python-oracledb 安装

准备 Python 环境,这里使用的是 Python 3.9。

$ python --version
Python 3.9.18

然后,安装 pip 工具。

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

使用 pip 安装 python-oracledb 包。

$ pip install oracledb
...
Requirement already satisfied: cryptography>=3.2.1 in /usr/lib64/python3.9/site-packages (from oracledb) (36.0.1)
Requirement already satisfied: cffi>=1.12 in /usr/lib64/python3.9/site-packages (from cryptography>=3.2.1->oracledb) (1.14.5)
Requirement already satisfied: pycparser in /usr/lib/python3.9/site-packages (from cffi>=1.12->cryptography>=3.2.1->oracledb) (2.20)
Requirement already satisfied: ply==3.11 in /usr/lib/python3.9/site-packages (from pycparser->cffi>=1.12->cryptography>=3.2.1->oracledb) (3.11)
Installing collected packages: oracledb
Successfully installed oracledb-2.2.0

到此, oracledb 已经安装完成,可以看到这里安装的是最新版本 2.2.0。

使用 oracledb 连接 23ai

下面举个栗子,演示如何使用 oracledb 连接到 Oracle 23ai 数据库。

代码基本流程如下:

  1. 引入 oracledb 包
  2. 创建独立连接
  3. 分别查看客户端和服务器端版本
  4. 创建测试表,其中一列的数据类型为向量
  5. 插入测试数据
  6. 查询测试表数据
import oracledb

conn = oracledb.connect(dsn="SHAWNYAN/1@127.1:1521/FREEPDB1", mode=oracledb.AUTH_MODE_SYSDBA)

print("Client version: ", oracledb.__version__)

if conn.is_healthy():
    print("Server version: ", conn.version)
else:
    print("Unusable connection. Please check.")

cursor = conn.cursor()

create_vector_table = """
CREATE TABLE IF NOT EXISTS orders 
(order_id INT, order_vector VECTOR)"""


cursor.execute(create_vector_table)
conn.commit()

insert_vector = "insert into orders values (1, '[1, 2]')"

cursor.execute(insert_vector)
conn.commit()

sql = "SELECT order_id, from_vector(order_vector) FROM ORDERS"

cursor.execute(sql)
result = cursor.fetchall()
for row in result:
    print(row)

cursor.close()
conn.close()
print("See u.")

输出结果:

Client version:  2.2.0
Server version:  23.4.0.24.5
(1'[1.0E+000,2.0E+000]')
See u.

小结

本文介绍了如何使用 python-oracle 连接 Oracle Database 23ai,并演示在代码中操作向量类型。

下一篇,将介绍两种连接池的用法。

往期回顾

  • 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
  • Oracle 数据库全面升级为 23ai
  • MySQL 8.4.0 LTS 发布 (MySQL 第一个长期支持版本)

-- END --

alt

↑关注“少安事务所”微信公众号,欢迎标星收藏,不错过精彩内容~

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/8684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyQt5的基本安装与使用

文章目录 1. 简介2.安装2.1.QtDisigner配置2.2 PyUIC配置2.3. PyRCC配置 3. 一个简单的PyQt5使用示例 1. 简介 PyQt5是一个用于创建交互式界面的Python库,它是基于Qt框架的Python绑定。Qt是一个跨平台的C框架,用于开发图形用户界面(GUI&…

scala速通(精简版)

1.变量和常量 var name [:VariableType] value // variable val name [:ConstantType] value // constant1.声明变量时,类型可以省略 2.类型定义后就不能修改言 3.变量声明必须有初始值 4.变量,常量分别用var,val声明修饰 2.标识符命名…

识货小程序逆向

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!wx a15018601872,x30184483x…

仓库管理系统需求调研要点

仓库管理系统需求调研 一、仓库的作用 仓库分类 原材料仓库:用于存放生产所需的原材料和零部件,需要保持原材料的质量和数量稳定。半成品仓库:存放生产过程中的半成品和在制品,需要保持良好的生产流程和及时出库。成品仓库&#x…

05-08 周三 FastBuild FastAPI 引入并发支持和全局捕获异常

时间版本修改人描述2024年5月8日20:41:03V0.1宋全恒新建文档 简介 由于FastBuild之前花费了大概5天的时间优化,但最近重新部署,又发现了一些问题,就很痛苦,五一之后,自己又花了三天的时间系统的进行了优化。 上一波优…

【R语言】生存分析模型

生存分析模型是用于研究时间至某个事件发生的概率的统计模型。这个事件可以是死亡、疾病复发、治疗失败等。生存分析模型旨在解决在研究时间相关数据时的挑战,例如右侧截尾(右侧截尾表示未观察到的事件发生,例如研究结束时还未发生事件&#…

2024年第七届人工智能和模式识别国际会议(AIPR 2024)即将召开!

2024年第七届人工智能和模式识别国际会议(AIPR 2024)将于2024年9月20-22日在福建厦门市的华侨大学举行。探索AI边界,解锁识别新境界!AIPR 2024旨在促进模式识别与机器学习, 计算机视觉与机器人视觉, 图像、语音、信号和视频处理等领域尖端成果…

星辰考古:TiDB v1.0 再回首

“ 1.0 版本只是个开始,是新的起点,愿我们一路相扶,不负远途。 前言 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库。 近日,TiDB v8.0.0 DMR 发布,详细发版说明戳这里: https://docs.pingca…

Java | Spring框架 | @Autowired与@Resource

在Spring框架中,依赖注入是一种核心概念,它允许开发者将对象的创建和对象之间的依赖关系的管理交给框架来处理。这样做的目的是为了提高代码的模块化和可测试性。 Spring提供了多种方式来实现依赖注入,其中最常用的方式是通过注解。在本文中…

uniapp + vue3 设置 axios proxy 代理,并重写路径

uniapp vue2 设置代理如下: 已生成的项目架构里面找到manifest.json文件,通过源码视图的方式打开文件,在文件中添加一下代码即可完成代理: "h5": {"devServer": {"disableHostCheck": true, //禁…

linux部署java1.8(jdk1.8)

两种方式: 方式一 1.输入查找命令: yum -y list java*2.输入安装命令: yum install -y java-1.8.0-openjdk.x86_643.测试是否已经安装: java -version方式二: 点击链接进入官网:https://www.oracle.com/…

Python 全栈体系【四阶】(四十一)

第五章 深度学习 九、图像分割 1. 基本介绍 1.1 什么是图像分割 图像分割(Segmentation)是图像处理和机器视觉一个重要分支,其目标是精确理解图像场景与内容。图像分割是在像素级别上的分类,属于同一类的像素都要被归为一类&a…

ReactFlow的ReactFlow实例事件传参undefined处理状态切换

1.问题 ReactFlow的ReactFlow实例有些事件我们在不同的状态下并不需要,而且有时候传参会出现其它渲染效果,比如只读状态下我们不想要拖拉拽onEdgesChange连线重连或删除的功能。 2.思路 事件名称类型默认值onEdgesChange(changes: EdgeChange[]) >…

pandas快速使用

DataFrame介绍 Dateframe结构和列表类似,区别是对于DataFrame的每一列和每一行均有一个标签。例如以下数据, 上述数据中,日期作为每行的标签。a、b、c、d、e分别是每列的标签 生成连续日期数据 使用方法date_range(),该方法有两…

平平科技工作室-Python-超级玛丽

一.准备图片 放在文件夹取名为images 二.准备一些音频和文字格式 放在文件夹media 三.编写代码 import sys, os sys.path.append(os.getcwd()) # coding:UTF-8 import pygame,sys import os from pygame.locals import* import time pygame.init() # 设置一个长为1250,宽为…

MySQL部署系列-centos离线安装MySQL

MySQL部署系列-centos离线安装MySQL 文章目录 MySQL部署系列-centos离线安装MySQL1. 查看是否已经安装 Mysql3. 下载官方 Mysql 包3. 下载之后上传到服务器4. 创建用户组5. 创建数据目录并赋予权限6. 修改配置文件 vim /etc/my.cnf7. 初始化数据库(数据库安装)8. 加入到系统服务…

【3dmax笔记】035: 车削修改器

一、车削修改器介绍 车削:图形通过绕轴旋转来创建三维效果。 开放的样条线,车削之后是面片。闭合的样条线,车削之后,是实体。 一、车削修改器实例 绘制高脚杯,首先在前视图绘制如下二维图形。 添加一个车削的修改器…

(六)JSP教程——out对象

out对象是在JSP中经常使用到的对象,它本质上是一个输出流,前面已经多次使用,我们经常使用它的print()和println()方法,这些方法主要用于实现客户端数据的输出。通过out对象也可以直接向客户端发送一个由程序动态生成的HTML文件。 …

关于YOLO8学习(三)训练自定义的数据集

前文 关于YOLO8学习(一)环境搭建,官方检测模型部署到手机 关于YOLO8学习(二)数据集收集,处理 简介 本文将会讲解: (1)如何通过PyCharm,进行训练数据,实现人脸检测 开发环境 win10、python 3.11、cmake、pytorch2.0.1+cu117、pycharm、ultralytics==8.0.134 要特…

牛客NC97 字符串出现次数的TopK问题【中等 哈希+优先级队列 Java/Go】

题目 题目链接: https://www.nowcoder.com/practice/fd711bdfa0e840b381d7e1b82183b3ee 核心 哈希,优先级队列Java代码 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返…