使用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
相关产品推荐
相关产品推荐

