文章目录
电脑环境
操作系统为Win10 大客户版;安装了PlsqlDev13(64位)、Pb9(32位)【很老的编程软件】、Python3.7(64位)、PyCharm2019.2.2(64位)。。。
需要达成的目标
由于Pb9是32位的,而要连接Oracle数据库必须也要32位的,其他的软件都是64位的,查了很多资料,都不能完美解决。因此花了些时间,达成了以下的目标:
根据不同的软件,调用不同的Oracle客户端。
需要的软件下载地址
Oracle 64位 轻客户端下载【jzss】
Oracle 32位 轻客户端下载【iefm】
PlsqlDev13(64位) 文件下载
PyCharm2019.2.2(64位)文件下载【n73u】
tnsnames.ora 内容
db=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
如何同时安装 32位和64位Oracle客户端?
很简单,把下载下来的2个客户端解压到不同的目录就可以了。注意:同时把tnsnames.ora文件也复制到2个目录中。
tnsnames.ora 文件里主要改这2个地方,最上面的(backup)改成你想叫的服务名字。
把经常用的Oracle客户端定义到系统变量中
我把64位定为经常用,所以定义到了系统变量中:
- ORACLE_HOME:定义你的oracle客户端的位置
- TNS_ADMIN :定义你的tnsnames.ora位置。
- NLS_LANG :定义你的数据库字符集,用这个语句找:select userenv(‘language’) from dual;
64位Oracle客户端测试:
PlsqlDev 测试成功!
32位Oracle客户端测试:
32位客户端只有pb编程软件才用到,因此不必把它加入到系统变量中,这里可以写个小小的bat文件来设置临时变量!!以后启动pb,只要启动这个bat文件就可以了。
@echo off
echo
set ORACLE_HOME=K:\instantclient_11_2_office_copy
set TNS_ADMIN =K:\instantclient_11_2_office_copy
set NLS_LANG =SIMPLIFIED CHINESE_CHINA.ZHS16GBK
set path=k:\instantclient_11_2_32bit;C:\Sybase\Shared\PowerBuilder
cd C:\Sybase\PowerBuilder 9.0
start pb90.exe
以上方法,完美解决oracle客户端不同位数版本共存。python同理也可以自由设置oracle客户端。
import os
import cx_Oracle #需pip install cx_oracle -i https://pypi.tuna.tsinghua.edu.cn/simple
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
os.environ['path'] = 'K:\instantclient_11_2'
db = cx_Oracle.connect('user/password@10.10.10.10:1521/orcl')
cursor = db.cursor()
cursor.execute("select * from users")
data = cursor.fetchall()
db.close()
print(data)
最后附上Pycharm2019.2.2的破解方法
- 下载:pyCharm2019.2.2
- 下载破解文件:jetbrains-agent.jar 【auug】
- 把jetbrains-agent.jar 文件 放到 C:\Program Files\JetBrains\PyCharm 2019.2.2\bin 目录中
- 用编辑器编辑C:\Program Files\JetBrains\PyCharm 2019.2.2\bin 目录下找到pycharm64.exe.vmoptions
- 在打开的文件最下面添加:-javaagent:C:\Program Files\JetBrains\PyCharm 2019.2.2\bin\jetbrains-agent.jar
- 激活:打开注册页面,选择License server 等待片刻,出来http://jetbrains-license-server 之后,点击 activate