在Python中如何使用cx_Oracle来访问Oracle
admin
2023-05-10 17:02:03
0

在Python中如果要访问和操作Oracle数据库,可使用cx_Oracle来实现。

  1. 准备工作

    1. 安装好Python,本例使用Python 2.7版本。

    2. 安装本地Oracle客户端,配置数据库连接,本例使用Oracle 11g。

    3. 下载和安装cx_Oracle

      下载地址:http://sourceforge.net/projects/cx-oracle/

      下载时注意Oracle数据库版本及本地Python版本。下载后,直接安装即可。

  2. 简单查询操作

    import cx_Oracle
    #创建数据库连接
    conn = cx_Oracle.connect('dbuser/password@servername/sid')
    #获取操作游标
    cursor = conn.cursor()
    #执行查询SQL,返回值1
    cursor.execute("""select 1 from dual""")
    #获取返回结果一条记录
    rs = cursor.fetchone()
    #执行完成,打印提示信息
    print 'result = %s'%rs
    result = 1
    
    #关闭连接,释放资源
    cursor.close()
    conn.close()
  3. 执行DDL建表语句

    cursor.execute("""create table tmp_user(id number, name varchar2(20))""")
    print 'completed!'
  4. 执行DML插入记录

    #插入一条记录
    cursor.execute(
    """insert into tmp_user values(1,'admin')"""
    )
    
    #采用绑定变量方式插入一条记录
    param = {'id':2, 'name':'system'}
    cursor.execute('insert into tmp_user values(:id, :name)',param)
    
    #一次插入多条数据,参数为字典列表形式
    param=[{'id':3,'name':'John'},{'id':4,'name':'Mary'},{'id':5,'name':'Steven'}]
    
    cursor.executemany('insert into tmp_user values(:id,:name)',param)
    
    #再一次插入多条数据,参数为元组列表形式
    param=[]
    for i in range(6,8): #[6,7]
        param.append((i,'user'+str(i)))
    
    cursor.executemany('insert into tmp_user values(:1,:2)',param)
    
    #提交事务
    conn.commit
  5. 查询返回多条记录的情况

    cursor.execute("""select * from tmp_user""")
    #获取2条记录
    r2 = cursor.fetchmany(2)
    print r2[0], r2[1]
    #获取剩余所有记录
    rn = cursor.fetchall()
    for row in rn:
        print row
    #带条件的查询
    cursor.prepare("""select * from tmp_user where id>=:id""")
    cursor.execute(None,{'id':7}) #None注意大小写
    for row in cursor:
        print row
  6. 执行调用存储过程(见下篇)

相关内容

热门资讯

以军士兵集体丢掉武器抗命,大喊... 据凤凰卫视报道,以色列国防军一军事基地7月30日发生士兵抗命事件,约120名士兵抗议指挥官做法,将武...
蒋成华任商务部副部长 国务院任免国家工作人员。任命蒋成华为商务部副部长。免去蒋成华的商务部国际贸易谈判副代表职务。
伊朗驻华大使:在军事威胁下,不... 新华社北京7月31日电(记者刁慧琳) 伊朗驻华大使法兹里7月28日表示,伊美回到谈判桌的前提是美国必...
伊朗革命卫队在霍尔木兹海峡击中... 当地时间31日,伊朗伊斯兰革命卫队发布声明称,革命卫队海军当天在霍尔木兹海峡击中并扣留了两艘违反禁令...
美媒:特朗普,遇到了一个更强硬... 据《纽约时报》7月29日报道,就在特朗普总统看似放弃战事升级计划几天后,美国再次与伊朗交火。上周末,...
女子做气管镜时不幸身亡,丈夫称... 7月29日,西安刘先生反映妻子在当地医院做支气管镜检查时死亡,看监控时发现医生疑有违规操作。刘先生表...
全网“帮卖西瓜”,然后呢? 近日,河南部分地区西瓜滞销的消息在网上热度很高。很多地方也伸出援手:有景区收购千斤西瓜、免费赠予游客...
美媒:乌克兰袭击伊朗船只,险引... 据《纽约时报》7月28日报道,据伊朗和西方官员称,伊朗曾考虑攻击乌克兰的一个港口,以报复乌克兰对一艘...
20年里,他只画美女,用东方风... 迈进KIM在上海的工作室,迎面是一整墙的美女们。她们像是刚从一场时髦的沙龙里退场,或倚或立,眉宇间是...
Google在港推出AI代理G... 观点网讯:7月29日,Google在香港推出AI代理Gemini Spark,该代理可全天候在后台运...