You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:27:39