# -*- coding:utf-8 -*-
#需要安装oracle客户端,下载地址http://download.csdn.net/detail/liumengcheng/5668389
#python2.6,
#cx_Oracle,下载地址http://cx-oracle.sourceforge.net/
#在C、Java等语言的语法中规定,必须以分号作为语句结束的标识。
#Python也支持分号,同样用于一条语句的结束标识。但在Python中分号的作用已经不像C、Java中那么重要了,
#Python中的分号可以省略,主要通过换行来识别语句的结束。
#建立和数据库系统的连接
conn = cx_Oracle.connect("hr/hr@192.168.56.23:1521/xe")
#获取操作游标
cursor = conn.cursor()
#执行SQL,创建一个表
cursor.execute("create table t2(id int, name varchar2(50),password varchar2(50))")
#插入一条记录
cursor.execute("insert into t2 values(1,'admin','password')");
#再插入一条数据
param={'id':2,'n':'admin','p':'password'}
cursor.execute('insert into t2 values(:id,:n,:p)',param);
#一次插入多条数据,参数为字典列表形式
param=[{'id':3,'n':'admin','p':'password'},{'id':4,'n':'admin','p':'password'},{'id':5,'n':'admin','p':'password'}];
cursor.executemany('insert into t2 values(:id,:n,:p)',param);
#再一次插入多条数据
param=[];
#生成5条插入数据,参数为元组列表形式
for i in range(6,11): # [6,7,8,9,10]
param.append((i,'user'+str(i),'password'+str(i)))
#插入数据
cursor.executemany('insert into t2 values(:1,:2,:3)',param)
#提交更改
conn.commit()
#执行查询 语句
cursor.execute("select * from t2")
#获取一条记录
one = cursor.fetchone()
print("1: id:%s,name:%s,password:%s"%one)
#获取两条记录!!!注意游标已经到了第二条
two = cursor.fetchmany(2)
print '2 and 3:',two[0],two[1]
#获取其余记录!!!注意游标已经到了第四条
three = cursor.fetchall();
for row in three:
print row #打印所有结果
#
cursor.prepare("select * from t2 where id <= :id")
cursor.execute(None,{'id':5})
for row in cursor: #相当于fetchall()
print row
#这是第二种绑定变量,推荐用这种 ,注意这里的(3,)是对的,还有一种就是cursor.execute("select * from t2 where id<=:1",[3])
cursor.execute("select * from t2 where id <=:1",(3,))
for row in cursor: #相当于fetchall()
print row
cursor.close()
conn.close()