django连接oracle踩到的坑

环境:python3.6.4
django1.8.16

1、ModuleNotFoundError: No module named 'cx_Oracle'
解决方法:
安装cx_Oracle,pip install cx_oracle即可(默认安装最新,本次安装6.4)
2、'cx_Oracle.Cursor' object has no attribute 'numbersAsStrings'
cx_oracle安装之后执行python3 manage.py inspectdb报错如上,经各种搜索并参考cx官网得出结论如下:

a、该numberAsStrings方法在cx5.3版本发布时就已经被废弃了,官方文档说应该被输入输出流代替什么的,有兴趣的可以去研究下。所以要使用本方法就只能选择cx_oracle的5.2版本
b、貌似cx_oracle从5.3版本才开始支持python3.6版本,所以,要使用cx5.2版本多半要对python降级
3、类似找不到include文件
解决方法:
尝试安装oracle-instantclient12.2-devel-12.2.0.1.0-1.x86_64.rpm或对应的instantclient-sdk-linux.x64-12.2.0.1.0.zip(前提至少已经安装了oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm)
4、fatal error: Python.h: 没有那个文件或目录
解决方法:
install python-dev或install python3-dev

ps:oracle安装之后环境变量设置

export ORACLE_HOME=/usr/lib/oracle/12.2/client64
export TNS_ADMIN=/usr/lib/oracle/12.2/network/admin
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/oracle/12.2/client/lib
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib;
export LD_LIBRARY_PATH```

ps:目前个人使用的搭配是Python3.4.9+cx_oracle5.2,后测试Python3.6.5+cx_oracle6.4.1貌似也可以,但是会报出类似数据库实例无效之类的错误,有时间再处理,另安装多版本Python环境建议使用Pyenv+virtualenv进行管理,安全方便,谁用谁知道~

你可能感兴趣的:(django连接oracle踩到的坑)