• python连接Oracle数据库


    python连接Oracle数据库较为麻烦,刚开始以为按照百度上的方法安装好python环境后直接pip安装cx-Oracle就行了,但是发现这样并不行,折腾了好久。。。

    除了安装python和cx-Oracle外还需要先配置客户端的环境,否则运行仍然会报错,下面介绍在windows下的配置方式

    注意:

      a、电脑上安装的python的版本要与cx-Oracle版本一致

           本人电脑上安装的是python3.6.2 64位,则相应的cx-Oracle版本为6.2

      b、本人连的是公司的服务器上的数据库,所以在本地并没有安装Oracle客户端,但是需要在本地下载 instantclient-basic 轻量级数据库

          下载的版本需要与公司安装的Oracle版本一致,我们公司是Oracle11_g 64位,所以我下载的是64位的instantclient-basic V11.2.0版本

          下载地址:https://www.jb51.net/database/572638.html#downintro2

      c、最重要的是Oracle是64位的,则python必须也是64位的不然会报错报错报错。。。。然后python与cx-Oracle版本也要对应,否则也会报错。

    好了,上面已经把需要注意的点讲清楚了,接下来正式配置了。

    第一步:安装python

        步骤不再重复,下载地址:https://www.python.org/downloads/release/python-362/

        

    第二步:安装Oracle客户端instantclient-basic

        下载后解压放到python安装目录下:C:Program FilesPython36instantclient_11_2 

        设置环境变量path : C:Program FilesPython36instantclient_11_2;  注意:后面必须添加 ; 隔开

    第三步:pip安装cx-oracle

     pip install cx-Oracle==6.2

    第四步:python连接Oracle数据库的基本操作

    (1)创建数据库连接和关闭数据库连接

    方法一:用户名、密码和监听分开写
    
    import cx_Oracle
    
    db=cx_Oracle.connect('username/password@host/orcl')
    
    db.close()
    
    方法二:用户名、密码和监听写在一起
    
    import cx_Oracle
    
    db=cx_Oracle.connect('username','password','host/orcl')
    
    db.close()
    

      

    方法三:配置监听并连接
    
    import cx_Oracle
    
    tns=cx_Oracle.makedsn('host',1521,'orcl')
    
    db=cx_Oracle.connect('username','password',tns)
    
    db.close()
    

    (2)建立cursor并执行SQL语句

            创建数据库连接,创建游标cursor,然后执行sql语句,执行完成后,关闭游标,关闭数据库连接

    # 创建游标cursor
    cr = db.cursor()
    sql = 'select * from table_name where number=123456'
    # 执行sql语句
    cr.execute(sql)
    # 一次那个返回所有结果集 fetchall
    rs = cr.fetchall()
    print("print all:%s"%rs)
    for x in rs:
        print(x)
    # 一次返回一行 fetchone
    rs=cr.fetchone()
    
    # 使用参数查询
    
    # 直接写参数
    cr.excute('select * from table_name where number=:id','id=123456')
    rs = cr.fetchall()
    # 将参数作为字典来处理
    pr = {'id':'123456'}
    cr.excute('select * from table_name where number=:id',pr)
    rs = cr.fetchall()
    
    cr.close()
    db.close()
    
    # 插入、更新、删除操作后需要提交 include:insert、update、delete
    ......
    cr.close()
    db.commit()
    

     

  • 相关阅读:
    python logging模块
    python re模块
    python xml模块
    python json,pickle,shelve模块
    python os,sys模块
    python 临时添加环境变量
    python random模块
    python time模块
    python 装饰器的简单使用
    python学习之路(二)
  • 原文地址:https://www.cnblogs.com/wulixia/p/11285228.html
Copyright © 2020-2023  润新知