【Python Oracle】使用cx_Oracle 连接oracle的简单介绍

连接数据库的几种方式:

语法:

cx_Oracle.connect('username','pwd','IP/HOSTNAME:PORT/TNSNAME')

import cx_Oracle

db1=cx_Oracle.connect('yang','yang','127.0.0.1:1523/yangdb')

db2=cx_Oracle.connect('yang/yang@127.0.0.1:1523/yangdb')

对于dsn 方式:

makedsn(IP/HOST,PORT,TNSNAME)

dsn=cx_Oracle.makedsn('127.0.0.1','1523','yangdb')

db3=cx_Oracle.connect('yang','yang',dsn)

例子:

oracle@rac3:/home/oracle/python>vim conndb4.py 

import cx_Oracle

username = "yang"

pwd = "yang"

--建立连接

dsn=cx_Oracle.makedsn('127.0.0.1','1523','yangdb')

db1=cx_Oracle.connect(username,pwd,dsn)

--获取游标

cursor = db1.cursor() 

--执行查询

sql = "select * from tab" 

cursor.execute(sql)

--获取数据 ,可以有多种方式 fetchall(),fetchmang(N)(N 为正整数),fetchone()

result = cursor.fetchall() 

count = cursor.rowcount 

print "=====================" 

print "Total:", count 

print "=====================" 

for row in result: 

        print row 

cursor.close

db1.close()   

oracle@rac3:/home/oracle/python>python conndb4.py 

=====================

Total: 9

=====================

('BIG_TABLE', 'TABLE', None)

('BIN$sgD3dAkmWHfgQPoK8Qcq3Q==$0', 'TABLE', None)

('BIND', 'TABLE', None)

('IM_SMS_ADD_FRIEND', 'TABLE', None)

('PARALTAB', 'TABLE', None)

('T1', 'TABLE', None)

('T2', 'TABLE', None)

('T3', 'TABLE', None)

('T4', 'TABLE', None)

1  分析: cx_Oracle.Cursor.parse([statement]) 在执行语句之前对其进行验证,当此类语句检测出错误的时候,会引发DatabaseError异常

2 执行

a cx_Oracle.Cursor.execute(statement,[parameters],**keyword_parameters)

此方法可以接受单个参数--一条sql语句直接针对数据库来运行。通过parameters或keyword_parameters 参数赋值的绑定变量可以指定为字典,学列或者一组关键字参数。如果已经提供了字典或关键字参数,那么这些值将与名称绑定。如果给出的是序列,将根据这些值的位置对他们进行解析。如果是查询操作,此方法返回一个变量对象列表;如果不是则返回None

b cx_Oracle.Cursor.executemany(statement,parameter) 对于批量插入尤其有用,因为操作的数量限制为仅仅一个。

3 获取 仅仅适用于查询--DDL,DCL 语句不返回结果。在不执行查询的游标上,这些方法将引发InterfaceError异常

3.1 cx_Oracle.Cursor.fetchall() 以字节组列表形式获取结果集中的所有剩余行,如果没有剩余行。它返回一个空白列表。获取操作可以通过设置游标的arraysize 属性进行调整,该属性可以设置在每个底层请求中从数据库中返回的行数。arraysize 的设置越高,需要在网络中往返传输的次数越少,arraysize 的默认值为1.

3.2 cx_Oracle.Cursor.fetchmany(N) 从数据库中获取N行。默认为arraysize的值。如果N的值大于获取到的行的数目,该方法获取的行数是真实的行数。

oracle@rac3:/home/oracle/python>cat conndb2.py 

import cx_Oracle

username = "yang" 

pwd = "yang" 

db1=cx_Oracle.connect(username,pwd,'127.0.0.1:1523/yangdb')

cursor = db1.cursor() 

sql = "select * from tab" 

cursor.execute(sql) 

result = cursor.fetchmany(5) 

oracle@rac3:/home/oracle/python>python conndb2.py 

=====================

Total: 5

=====================

('BIG_TABLE', 'TABLE', None)

('BIN$sgD3dAkmWHfgQPoK8Qcq3Q==$0', 'TABLE', None)

('BIND', 'TABLE', None)

('IM_SMS_ADD_FRIEND', 'TABLE', None)

('PARALTAB', 'TABLE', None)

3.3cx_Oracle.Cursor.fetchone() 获取一个行数据,单个字节组。如果无剩余行则返回none。

oracle@rac3:/home/oracle/python>cat conndb2.py    

import cx_Oracle

username = "yang"

pwd = "yang"

db1=cx_Oracle.connect(username,pwd,'127.0.0.1:1523/yangdb')

cursor = db1.cursor()

sql = "select * from tab"

cursor.execute(sql)

result = cursor.fetchmany(1) 

count = cursor.rowcount

print "====================="

print "Total:", count

print "====================="

for row in result:

        print row

cursor.close

db1.close()

oracle@rac3:/home/oracle/python>python conndb2.py 

=====================

Total: 1

=====================

('BIG_TABLE', 'TABLE', None)

4 绑定变量模式 cx_Oracle 支持oracle绑定变量的特性

bind_val={'dept_id':20,'sal':700}

query1=cursor.execute('select * from emp where deptno=:dept_id and salary>:sal',bind_val)

query2=cursor.execute('select * from emp where deptno=:dept_id and salary>:sal',bind_val,dept_id=20,sal=700)

可以使用print coursor.bindnames()来查看绑定变量的值。

oracle@rac3:/home/oracle/python>python conndb4.py 

=====================

Total: 5

=====================

(7369, 'SMITH', 'CLERK', 7902, datetime.datetime(1980, 12, 17, 0, 0), 800.0, None, 20)

(7566, 'JONES', 'MANAGER', 7839, datetime.datetime(1981, 4, 2, 0, 0), 2975.0, None, 20)

(7788, 'SCOTT', 'ANALYST', 7566, datetime.datetime(1987, 4, 19, 0, 0), 3000.0, None, 20)

(7876, 'ADAMS', 'CLERK', 7788, datetime.datetime(1987, 5, 23, 0, 0), 1100.0, None, 20)

(7902, 'FORD', 'ANALYST', 7566, datetime.datetime(1981, 12, 3, 0, 0), 3000.0, None, 20)

bind_val={'dept_id':20,'sal':700} 

cursor.execute('select * from emp where deptno=:dept_id and sal>:sal',bind_val)

该过程使用的变量为:

['DEPT_ID', 'SAL']

时间: 2024-10-12 07:26:46

【Python Oracle】使用cx_Oracle 连接oracle的简单介绍的相关文章

oracle数据库-BoneCPDataSource连接Oracle问题

问题描述 BoneCPDataSource连接Oracle问题 2014-05-24 10:09:34,875 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Unable to open a test connection to the given database. JDBC url = jdbc:oracle:thin:@127.0.0.1:1521:xe, username = wechat. Terminating con

在PYTHON中,用cx_Oracle连接ORACLE数据库简单示例

一,在安装的时候,参数有点不一样: python setup.py build install   二,连接数据库,有两种方式,DSN和TNSNAMES方式: #dsn = orcl.makedsn(self.oracle_host, self.oracle_port, self.oracle_sid) #con = orcl.connect(self.oracle_username, self.oracle_password, dsn) con = orcl.connect(self.orac

Python中通过cx_oracle操作ORACLE数据库的封闭函数

哈哈,看来我的SQL自动化发布,马上就全面支持ORACLE,MYSQL,POSTGRESQL,MSSQL啦... http://blog.csdn.net/swiftshow/article/details/7383481 def Oracle_Exec(SqlStr): "Execute oracle command" conn = cx_Oracle.connect(DB_UserName, DB_UserPwd, DB_ConnectStr) cursor = conn.curs

ThinkPHP连接Oracle数据库_php技巧

一.操作环境搭建 系统:Windows7 旗舰版 64位 PHP环境:wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24 32位版 下载地址:http://www.jb51.net/softs/161568.html ThinkPHP:3.2.3正式版 下载地址:http://thinkphp.cn/down.html Oracle:Orcale_11gR2 32位版 下载地址:http://www.oracle.com/technetwork/cn/

PHP连接ORACLE的方法

PHPPHP连接ORACLE的方法连接ORACLE 环境需求:安装Oracle或者oracle客户端. 环境需求:安装Oracle或者oracle客户端. $oraUser="username"; $oraPass="password"; $oraDB="(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=数据库ip)(PORT=1521)))(CONNECT_DATA=(SID=数据库SID))

php连接oracle的例子

1.确认php支持oci 2.建立测试页 <? $dbconn = oci_connect('crmtest','123456',"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=114.1.12.12)(PORT=1521))(CONNECT_DATA=(SID=orc1)))"); if ($dbconn) { echo '连接成功'; }else { echo '连接失败'; } ?> 以上是小编为您精心准备的的内容,在的博客.问答

asp.net连接oracle的问题及方法总结

.net连oracle数据库的两个方法介绍 1. 安装oracle客户端,连接oracle     需要在客户端%oracle_client_home%network/admin/配置tnsnames.ora,以服务名aa为例,客户端和服务器服务名及连接串需要保持一致.服务名的配置实例如:  代码如下 复制代码 a =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = helen)(PORT

oracle-C#连接Oracle数据库问题

问题描述 C#连接Oracle数据库问题 连接字符串错误时,Open函数返回错误非常慢,有时候就卡死了,求大神 解决方案 通常是客户端连接的问题吧 解决方案二: C#连接Oracle数据库C#连接Oracle数据库C#怎么连接Oracle数据库

java连接Oracle数据库的方法解析_java

Oracle数据库先创建一个表和添加一些数据 1.先在Oracle数据库中创建一个student表: create table student ( id number(11) not null primary key, stu_name varchar(16) not null, gender number(11) default null, age number(11) default null, address varchar(128) default null ); 2.向表中增添一些数据