需求:用python的cx_Oracle库连接Oracle数据库,并执行sql语句获取结果
使用到的工具:pycharm、cx_Oracle、Oracle Instant Client(即时客户端)
由于使用的是cx_Oracle,必须要安装一个客户端,可以参考其官方文档https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html
1. 下载cx_Oracle库
pip install cx_Oracle
下载完成之后的提示:
2.1 下载Oracle Instant Client(即时客户端)
这是Oracle Instant Client的下载首页,有很多种版本可供下载。
我本次下载的是instantclient_19_9版本的64位的。
链接:https://pan.baidu.com/s/1VLvHy-VpsRK3gCp-wbbzjw
提取码:t1ra
本机是32位的就下载32位的,本机是64位就下载64位的。
但要注意第三方工具如:PL/SQL Developer和Toad的版本,32位的要对应32位的OracleInstant Client,不要因为系统是64位的就下载64位的,这个要注意。
2.2 配置环境
把下载的instantclient_19_9解压到D盘目录下,注意目录不要有中文。
在系统的环境变量中设置变量:
ORACLE_HOME = D:\ce_shi\instantclient_19_9
TNS_ADMIN = D:\ce_shi\instantclient_19_9
NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改path变量:在后面添加D:\ce_shi\instantclient_19_9
2.3 新建
在D:\ce_shi\instantclient_19_9目录下添加一个tnsnames.ora文件
用记事本打开,增加自己的数据库配置信息:
MyDB=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST= 域名)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PSSQAS)
)
)
注意格式要排列好
主要改 = 前面的别名,Host为IP地址, SERVICE_NAME为数据库服务器的实例名。
基本上修改HOST就可以,如果实在不行再把SERVICE_NAME修改为开发给你的一段【域名:端口:SERVICE_NAME】中最后的SERVICE_NAME写入
3.python写代码连接Oracle数据库
实例:
import cx_Oracle
# 以下内容,下面括号内的内容可根据实际情况填写
con = cx_Oracle.connect("用户名/密码@IP:端口号/SERVICE_NAME")
# 创建一个游标对象
cur = con.cursor()
# 使用execute执行sql语句
sql = 'select * from EX_EXAMINATION_PAPER where EXAM_ID = 346225'
result = cur.execute(sql)
# 使用fetchall()获取所有数据,并将结果打印出来
print(cur.fetchall())
打印结果:
PS:Oracle Instant Client(即时客户端)卸载方法
“环境变量”中的“系统变量”中:
删除 ORACLE_HOME,TNS_ADMIN, NLS_LANG 三个变量,修改path变量,去掉D:\ce_shi\instantclient_19_9目录
删除D:\ce_shi\instantclient_19_9目录