下载|Python冷知识:操作Oracle数据库教程

 下载|Python冷知识:操作Oracle数据库教程
文章图片
1
准备工作
首先,你必须安装好Oracle数据库。Oracle数据库的安装并不是那么容易,大家可以去找一个安装教程,慢慢研究。
其次,你既然用Python操作Oracle,你必须要安装Python吧。Python的安装过程较为简单。但是有一点需要注意:一定要安装64位的Python,不要使用32位的。
最后,也是最复杂的一步。我们需要进行instantclient的下载安装和环境配置,它是oracle数据库的客户端,这个最好也是下载64位的。
2
instantclient的安装与配置
1.instantclient的下载地址
在进行instantclient的安装与配置之前,我先提供给大家一个下载链接,供大家下载,我们直接下载像11或者12这样的高版本,即可。
2.instantclient的安装
直接解压instantclient安装包;
解压后的文件位置,不要随意放置;
我们需要将instantclient安装包,解压后得到的文件夹,放置在Oracle安装目录下的product的直接字目录下。
 下载|Python冷知识:操作Oracle数据库教程
文章图片
3.instantclient的环境配置
按照图中操作,完成环境变量的配置;
 下载|Python冷知识:操作Oracle数据库教程
文章图片
将这个解压目录名下的oraociei11.dll、oraocci11.dll、oci.dll文件复制到python安装目录的Lib/site-packages文件夹下;
instantclient安装包解压后的文件夹:
 下载|Python冷知识:操作Oracle数据库教程
文章图片
 下载|Python冷知识:操作Oracle数据库教程
文章图片
3
其他需要特别注意的点
1.解决中文乱码问题
当使用Python读取到Oracle数据库中的某张表,如果该表中存在中文,会出现中文乱码的问题。因此需要设置NLS_LANG环境变量,来解决这个问题,下面提供了两种方式。
① 打开CMD黑窗口,输入以下命令;

C:\Users\AA>set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
② 直接在写代码的时候,输入以下命令;
import osos.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
注意:上述两种方式书写命令的位置不同,不要弄错了。其次,上述设置NLS_LANG环境变量的方式,仅对当前窗口有效。其实,我们也可以永久修改NLS_LANG环境变量,但是请不要这么做。
2.关于cx_Oracle驱动包的安装,需要注意的问题
cx_Oracle是Python操作Oracle数据库,需要使用的驱动包。类似于Python操作MySQL使用的pymysql驱动包。
4
Python与Oracle交互操作
其实Python操作Oracle数据库,和Python操作MySQL数据库,基本上都是一样的道理,一通百通。我之前已经写了一个Python操作MySQL数据库的详细教程,下面提供给大家这个链接。
1.Python链接Oracle服务器的3种方式
① 用户名、密码和监听写在一起
import cx_Oracledb = cx_Oracle.connect('scott/a123456@DESKTOP-V4LKB10:1521/orcl')
② 用户名、密码和监听分开写
import cx_Oracledb = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
③ 配置监听并连接
import cx_Oraclemoniter = cx_Oracle.makedsn('192.168.2.1',1521,'orcl')
db = cx_Oracle.connect('scott','a123456',moniter)
2.Python怎么获取Oracle中的数据(查)
数据分析师日常工作用到最多的就是“查”,因此我们只讲述怎么查数据。关于其它的增删改操作,都是类似于MySQL,这里就不详细说明。
① fetchone:一次获取一条记录;
import cx_Oracle# 注意:一定要加下面这两行代码,负责会中文乱码;
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")
cursor = db.cursor
cursor.execute('select count(*) from emp1')
aa = cursor.fetchone
print(aa)
cursor.execute('select ename,deptno,sal from emp1')
for i in range(aa[0]):
【 下载|Python冷知识:操作Oracle数据库教程】a,b,c = cursor.fetchone
d = "我的名字叫{},所在部门是{},工资是{}美元".format(a,b,c)
display(d)
db.close
截取部分结果如下:
 下载|Python冷知识:操作Oracle数据库教程
文章图片
② fetchall:一次获取所有记录;
import cx_Oracle# 注意:一定要加下面这两行代码,负责会中文乱码;
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
db = cx_Oracle.connect("scott","a123456","192.168.2.1:1521/orcl")