博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python实战之Oracle数据库操作
阅读量:6002 次
发布时间:2019-06-20

本文共 1966 字,大约阅读时间需要 6 分钟。

1. 要想使Python可以操作Oracle数据库,首先需要安装cx_Oracle包,可以通过下面的地址来获取安装包

[plain]
  1. http://cx-oracle.sourceforge.net/  

2. 另外还需要oracle的一些类库,此时需要在运行python的机器上安装Oracle Instant Client软件包,可以通过下面地址获得

[plain]
  1. http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html  

找到符合自己平台的包,然后安装,这里我使用的是rpm包,所以使用以下命令安装

[plain]
  1. $ sudo rpm -ivh  oracle-instantclient11.2-basic-11.2.0.3.0-1.i386.rpm  

装完毕后还需要设置一下环境变量,如下

[plain]
  1. $ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib/oracle/11.2/client/lib  

3. 创建一个简单的python文件,测试安装是否成功

[python]
  1. import cx_Oracle  
  2.   
  3. conn = cx_Oracle.connect('fkong/fkong@172.17.23.129/orcl')    
  4. cursor = conn.cursor ()  
  5. cursor.execute ("select * from dual")  
  6. row = cursor.fetchone ()  
  7. print row[0]  
  8.   
  9. cursor.close ()  
  10. conn.close ()  

4. 下面看一个数据库建表和插入操作

[python]
  1. import cx_Oracle  
  2.   
  3. conn = cx_Oracle.connect('fkong/fkong@172.17.23.129/orcl')    
  4. cursor = conn.cursor ()  
  5.   
  6. cursor.execute ("CREATE TABLE TEST(ID INT, COL1 VARCHAR(32), COL2 VARCHAR(32), COL3 VARCHAR(32))")  
  7.   
  8. cursor.execute ("INSERT INTO TEST (ID, COL1, COL2, COL3)VALUES(1, 'a', 'b', 'c')")  
  9. cursor.execute ("INSERT INTO TEST (ID, COL1, COL2, COL3)VALUES(2, 'aa', 'bb', 'cc')")  
  10. cursor.execute ("INSERT INTO TEST (ID, COL1, COL2, COL3)VALUES(3, 'aaa', 'bbb', 'ccc')")  
  11. conn.commit()  
  12.   
  13. cursor.close ()  
  14. conn.close ()  

5. 下面再来看看查询,查询通常有两种方式:一种是使用cursor.fetchall()获取所有查询结果,然后再一行一行的迭代;另一种每次通过cursor.fetchone()获取一条记录,直到获取的结果为空为止。看一下下面的例子:

[python]
    1. import cx_Oracle  
    2.   
    3. conn = cx_Oracle.connect('fkong/fkong@172.17.23.129/orcl')    
    4. cursor = conn.cursor ()  
    5.   
    6. cursor.execute ("SELECT * FROM TEST")  
    7. rows = cursor.fetchall()  
    8. for row in rows:  
    9.     print "%d, %s, %s, %s" % (row[0], row[1], row[2], row[3])  
    10.   
    11. print "Number of rows returned: %d" % cursor.rowcount  
    12.   
    13. cursor.execute ("SELECT * FROM TEST")  
    14. while (1):  
    15.     row = cursor.fetchone()  
    16.     if row == None:  
    17.         break  
    18.     print "%d, %s, %s, %s" % (row[0], row[1], row[2], row[3])  
    19.       
    20. print "Number of rows returned: %d" % cursor.rowcount  
    21.   
    22. cursor.close ()  
    23. conn.close () 

转载于:https://www.cnblogs.com/qidongbo/p/7765431.html

你可能感兴趣的文章
【PHP基础】错误处理、异常处理
查看>>
Android之drawable state各个属性详解
查看>>
Linux——网段的划分,子网掩码,ABC类地址的表示法
查看>>
android开发(22)使用正则表达式 。从一个字符串中找出数字,多次匹配。
查看>>
AJAX
查看>>
2015 多校联赛 ——HDU5334(构造)
查看>>
mysql字符集
查看>>
DP_1d1d诗人小G
查看>>
非、半、结构化数据学习【转载】
查看>>
avalon加载一闪而过现象
查看>>
Castle IOC概念理解
查看>>
如何配置Log4Net使用Oracle数据库记录日志
查看>>
一道在知乎很火的 Java 题——如何输出 ab【转】
查看>>
Python学习第二天-编写购物车
查看>>
AD域组策略-只显示指定的控制面板选项配置方法
查看>>
BigTable——针对结构型数据的一种分布式存储系统
查看>>
ip通信基础第二周回顾
查看>>
唯美MACD-完全版
查看>>
Canvas中 drawImage绘制图片不显示
查看>>
MyEclipse新建Server项目
查看>>