使用python-oracledb操作Oracle 23.4向量类型时遇DB_TYPE_VECTOR不存在错误
解决python-oracledb访问Oracle 23.4向量类型的问题
版本要求:你需要安装python-oracledb 2.4.0及以上版本,该版本才开始支持Oracle 23c的向量类型。旧版本无相关支持,因此会出现找不到
DB_TYPE_VECTOR的错误。执行以下命令升级:pip install --upgrade oracledb无需显式指定DB_TYPE_VECTOR:python-oracledb对向量类型的处理是隐式的,不需要手动引用
DB_TYPE_VECTOR常量。读取向量列时,驱动会自动将其转换为Python列表或numpy数组;插入向量数据时,直接传入Python列表或numpy数组即可,驱动会自动完成类型映射。示例代码:
import oracledb import numpy as np # 连接数据库 conn = oracledb.connect(user="your_user", password="your_pwd", dsn="your_dsn") cursor = conn.cursor() # 创建带向量列的表(若不存在) cursor.execute("CREATE TABLE vec_table (id NUMBER, vec VECTOR(3))") # 插入向量数据 vec_data = np.array([1.0, 2.0, 3.0]) cursor.execute("INSERT INTO vec_table VALUES (:1, :2)", [1, vec_data]) conn.commit() # 查询向量数据 cursor.execute("SELECT vec FROM vec_table WHERE id = :1", [1]) result = cursor.fetchone() print(result[0]) # 输出为类似[1.0, 2.0, 3.0]的列表或numpy数组关于Github代码中未找到DB_TYPE_VECTOR:python-oracledb并未将
DB_TYPE_VECTOR作为公共常量暴露,向量类型的处理逻辑是内部封装的,因此你在代码仓库中找不到该常量是正常的,无需手动引用它来操作向量。
内容的提问来源于stack exchange,提问作者snacktop
相关产品推荐
相关产品推荐

