pycharm不能訪問oracle(sybase)的問題

oracle環境:html

服務器:docker中的oracle服務器,服務名爲xe,參考unbuntu下Docker安裝oracle和mysqlpython

客戶端:instantclient客戶端,參考打造ubuntu下精簡版的oracle客戶端及pro*c編譯環境mysql

因爲oracle環境變量:sql

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服務名:docker

解決方案:ubuntu

一、在bash中啓動pycharmbash

$/usr/local/bin/charm服務器

二、修改python代碼加上主機地址oracle

如:.net

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'

就可解決。

三、經過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

見下圖

相關文章
相關標籤/搜索