pycharm不能访问oracle(sybase)的问题

oracle环境:

服务器:docker中的oracle服务器,服务名为xe,参考unbuntu下Docker安装oracle和mysql

客户端:instantclient客户端,参考打造ubuntu下精简版的oracle客户端及pro*c编译环境

由于oracle环境变量:

export ORACLE_HOME=/opt/ora11g/instantclient_11_2
export TNS_ADMIN=$ORACLE_HOME/network/admin
export NLS_LANG='simplified chinese_china'.UTF8
export PATH=$ORACLE_HOME/bin:$PATH
alias sqlplus='/usr/bin/rlwrap sqlplus'

在.bashrc中设置,而pycharm是通过桌面快捷方式来启动的,导致pycharm没有继承oracle相关的环境变量,从而python无法识别oracle服务名:

解决方案:

1、在bash中启动pycharm

$/usr/local/bin/charm

2、修改python代码加上主机地址

如:

conn= cx_Oracle.connect('scott/tiger@XE')

改为:

conn= cx_Oracle.connect('scott/tiger@127.0.0.1/XE')

这样连接成功,但中文会乱码:因为没有继承

export NLS_LANG='simplified chinese_china'.UTF8

python代码中加上:

import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'

就可解决。

3、通过pyodbc也会有同样的问题:

/etc/odbcinst.ini配置不变:

[oracle]
Description=Oracle ODBC driver for Oracle 11g
Driver=/opt/ora11g/instantclient_11_2/lib/libsqora.so.11.1
Setup=
FileUsage=
CPTimeout=
CPReuse=

修改/etc/odbc.ini中的ServerName加上主机地址:

即把

[ORCLORA1]
Description     = ODBC for Oracle
Driver          = oracle
ServerName      = XE
UserID          = scott
Password        = tiger

改成:

[ORCLORA1]
Description     = ODBC for Oracle
Driver          = oracle
ServerName      = 127.0.0.1/XE
UserID          = scott
Password        = tiger

4.sybase也会有同样的问题

可以通过在bash中启动pycharm也可以在运行配置窗口设置environment variable如下:

PYTHONUNBUFFERED=1;LD_LIBRARY_PATH=/opt/sybase/ASE-16_0/lib:/opt/sybase/OCS-16_0/lib:$LD_LIBRARY_PATH

见下图

转载于:https://my.oschina.net/u/2245781/blog/1820090

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值