django 连接oracle的坑和解决方法

本文解决Oracle11g客户端与Django集成过程中遇到的oci.dll架构错误、数据库连接SID与SERVICE_NAME混淆及cx_Oracle版本兼容性问题。通过调整环境配置、修改数据库连接设置及调整cx_Oracle版本,最终实现Oracle数据库与Django项目的顺利集成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

oracle11g客户端,cx-oracle6.1安装好之后报错:

1.oci.dll is not the correct architecture 

 原因是64位系统安装了32位的oracle11g客户端,当时是为了使用plsql,因为plsql只有32位,。重新下载了oracle11g 64位客户端,并在环境变量中配置好路径。

2.继续报错

django.db.utils.DatabaseError: ORA-12505: TNS:listener does not currently know of SID given in connect descriptor

原因是在配置django的setting.py的数据库连接时候按着一下方式配置,一下方式的NAME是要求SID不是SERVICE_NAME

 'default': {
            'ENGINE': 'django.db.backends.oracle',
            'NAME': 'myservice',
            'USER': 'system',
            'PASSWORD': 'admin123',
            'HOST': '192.168.1.45',
            'PORT': '1699',
    }

 

改为支持SERVICE_NAME的配置方式,

     'default': {
                'ENGINE': 'django.db.backends.oracle',
                'NAME': 'host.db.com:1699/oracle_service.db.com',
                'USER': 'user',
                'PASSWORD': 'pass',
        }

3.继续报错

'cx_Oracle.Cursor' object has no attribute 'numbersAsStrings' 

原因是cx_oracle6.1版本没有numbersAsStrings属性了,降低cx_oracle版本至5.2

测试:

 from django.db import connection
 cursor = connection.cursor()

没报错则成功;

相关资源连接:

https://download.youkuaiyun.com/download/houzixuena/10713190

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值