当前位置: 首页>编程语言>正文

python高阶学习笔记:8 python操作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_Oracle
get_conn1 = cx_Oracle.connect('scott','tiger','localhost:1521/orcl')

第二种方式:普通用户

#导入模块
import cx_Oracle
get_conn2 = cx_Oracle.connect('scott/tiger@localhost:1521/orcl')

第三种方式:系统管理员

#导入模块
import cx_Oracle
get_conn3 = cx_Oracle.connect('sys/123456@localhost:1521/orcl',mode=cx_Oracle.SYSDBA)

第四种方式:dsn_tns

#导入模块
import cx_Oracle
dsn_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.cnotallow=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()

执行结果如下:


https://www.xamrdz.com/lan/5v61963709.html

相关文章: