前言
对于数据的管理和分析来说,数据库还是专业一些。如果Python能和数据库结合在一起,那么就能结合两种的优势,提高效率。如果工作中使用的是Oracle数据库,那么python可以通过第三方模块cx_Oracle可以与Oracle相连。
安装cx_Oracle
Python一个官方网站PyPI,上面有丰富的模块。cx_Oracle就可以在PyPI中下载。打开PyPI的网址https://pypi.python.org/pypi,在里面搜索cx_Oracle,即可找到该模块;同样也可以直接通过pip或者pycharm中settings进行下载安装;
pip install cx_Oracle操作步骤
①.引用模块cx_Oracle ②.连接数据库 ③.获取cursor ④.使用cursor进行各种操作 ⑤.关闭cursor ⑥.关闭连接
连接方式
第一种方式:普通用户
如果端口号默认1521可以省略
#导入模块import cx_Oracleget_conn1 = cx_Oracle.connect('scott','tiger','localhost:1521/orcl')第二种方式:普通用户
#导入模块import cx_Oracleget_conn2 = cx_Oracle.connect('scott/tiger@localhost:1521/orcl')第三种方式:系统管理员
#导入模块import cx_Oracleget_conn3 = cx_Oracle.connect('sys/123456@localhost:1521/orcl',mode=cx_Oracle.SYSDBA)第四种方式:dsn_tns
#导入模块import cx_Oracledsn_tns = cx_Oracle.makedsn('localhost', 1521, 'orcl')get_conn4 = cx_Oracle.connect('scott', 'tiger', dsn_tns)注意:完成以上连接方式都必须安装对应Oracle版本的客户端,否则会抛出以下异常
可根据提示打开以下网址进行下载对应版本的客户端
https://oracle.github.io/odpi/doc/installation.html#windows
进入后有详细的说明以及操作:
此处切记必须选对应oracle版本的客户端进行下载;
下载后置于C盘新建一个文件夹oracle,并将其进行解压缩,如下图:
然后非常重要的、非常重要的、非常重要的,重要的事情说三遍,将该目录C:\oracle\instantclient_11_2路径添加到path环境变量中,且需要将该环境变量置于所有变量之前(实际只要置于oracle自动添加到path环境变量中之前即可);如下图:
最后,将pycharm也需要重启,其环境变量才会生效,最后重新启动重新执行脚本,则执行通过;
oracle后续的操作与其他类型数据库操作步骤一样,此处就不过多赘述。
EMP表的查询操作
#-*- coding:utf-8 -*-##-------------------------------------------------------------------------#ProjectName: Python2020#FileName: Oracle_Test.py#Author: mutou#Date: 2020/6/2 22:17#Description:oracle操作#--------------------------------------------------------------------------#也是需要引用第三方模块#引用模块import cx_Oracle#除了安装cx_Oracle模块以外,还需要下载对应版本的客户端,是对应cx_Oracle的客户端;必须下载与之当前oracle对应的客户端版本#然后解压放在C盘新建的一个oracle目录下,重要的需要配置环境变量,将该目录的路径添加到path中,且需要放在所有变量的第一个;#需要将pycharm关闭重新打开#第一步:需要建立连接class OracleTest(object): def __init__(self): #普通用户的基本信息;用户名、密码、服务器地址以及实例名 self.conn=cx_Oracle.connect("scott","tiger","localhost/orcl") self.get_cursor=self.conn.cursor() #查询scott用户中的emp表 def select_data(self): str_sql="select * from emp" self.get_cursor.execute(str_sql) get_reuslt=self.get_cursor.fetchall() print(get_reuslt) #测试一下:if __name__=="__main__": orac=OracleTest() print(orac.conn) orac.select_data()执行结果如下:
