在Python中如果要访问和操作Oracle数据库,可使用cx_Oracle来实现。本文主要对cx_Oracle基本功能进行测试。 准备工作
安装好Python,本例使用Python 2.7版本。 安装本地Oracle客户端,配置数据库连接,本例使用Oracle 11g。
下载和安装cx_Oracle
下载时注意Oracle数据库版本及本地Python版本。下载后,直接安装即可。
简单查询操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| 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()
|
- 执行DDL建表语句
1
2
| cursor.execute("""create table tmp_user(id number, name varchar2(20))""")
print 'completed!'
|
- 执行DML插入记录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #插入一条记录
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
|
- 查询返回多条记录的情况
1
2
3
4
5
6
7
8
9
10
11
12
13
| 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
|
执行调用存储过程
|