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

使用wallet.zip连接Oracle与Django应用时遇参数错误求助

解决Django Oracle配置中wallet_location无效的问题

错误原因

Django的django.db.backends.oracle后端不支持将wallet_location直接作为OPTIONS中的参数传入,这个参数不属于cx_Oracle.connect()方法的合法参数,因此会抛出"invalid keyword argument"错误。

解决方案

以下是两种可行的配置方式:

方式一:通过环境变量指定钱包路径

Oracle客户端会自动读取TNS_ADMIN环境变量定位钱包文件(含tnsnames.ora),可在settings.py开头设置该变量:

import os
# 设置钱包所在目录路径
os.environ['TNS_ADMIN'] = 'C:\\Users\\Administrator\\Desktop\\Wallet_Location'

DATABASES = {    
    "oracledb": {
        "ENGINE": "django.db.backends.oracle",
        "NAME": "dummyemployee",  # 对应tnsnames.ora中的服务名
        "USER": "dummyuser123",
        "PASSWORD": "dummypass123",
    }
}

方式二:初始化cx_Oracle客户端时配置钱包

在Django加载数据库配置前,直接调用cx_Oracle.init_oracle_client指定钱包路径:

import cx_Oracle

# 初始化Oracle客户端并配置钱包
cx_Oracle.init_oracle_client(
    config_dir='C:\\Users\\Administrator\\Desktop\\Wallet_Location',
    wallet_location='C:\\Users\\Administrator\\Desktop\\Wallet_Location'
)

DATABASES = {    
    "oracledb": {
        "ENGINE": "django.db.backends.oracle",
        "NAME": "dummyemployee",
        "USER": "dummyuser123",
        "PASSWORD": "dummypass123",
    }
}

额外注意事项

  • 确保cx_Oracle版本≥8.0、Django版本≥3.2,以支持最新Oracle钱包配置方式。
  • 确认钱包目录包含完整的钱包文件(如cwallet.sso、tnsnames.ora等),且路径配置无误。

内容的提问来源于stack exchange,提问作者HARISH SOMSOLE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:42:22