连接oracle数据库的几种方式: 语法: cx_Oracle.connect('username','pwd','IP/HOSTNAME:PORT/TNSNAME') import cx_Oracle db1=cx_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']

该文由职坐标整理并发布,了解更多相关内容,请关注职坐标Oracle数据库频道!

用什么方式链接oracle数据库,使用cx_Oracle 连接oracle数据库的几种方式相关推荐

  1. python连接oracle用法_【Python Oracle】使用cx_Oracle 连接oracle的简单介绍

    连接数据库的几种方式: 语法: cx_Oracle.connect('username','pwd','IP/HOSTNAME:PORT/TNSNAME') import cx_Oracle db1= ...

  2. mybatis实现一对多有几种方式_两件塑胶件连接,有哪几种方式实现?

    出于工艺或结构考虑,很多的塑料产品或塑胶部件可能是由不同材料.不同功能的零部件组装而成,两个零件要组装在一起就需要在它们之间设计连接,连接设计的目的就是要根据各种因素设计一种最适宜的连接方法,将零部件 ...

  3. python cx_Oracle连接Oracle数据库查询

    python cx_Oracle连接Oracle数据库查询 代码 带参数查询 官方文档地址 代码 import cx_Oracle import pandas as pdsql = ''' SELEC ...

  4. Linux---Docker镜像使用cx_Oracle连接Oracle数据库

    Linux-Docker镜像使用cx_Oracle连接Oracle数据库 前置条件 包含python环境的Docker镜像,如python3.7 安装Oracle客户端 文件下载 首先Oracle官网 ...

  5. python 连接 oracle 循环,4.使用cx_Oracle连接Oracle(高级篇)

    [Python运维]使用cx_Oracle连接Oracle(高级篇) 这节的内容较多,分别是: 使用sys用户连接Oracle数据库 通过函数执行SQL语句 通过读取文件内的内容来执行SQL语句 使用 ...

  6. python oracle数据库开发_python连接Oracle数据库

    # python连接oracle数据 ## 介绍 ----------------------------- - python 连接oracle数据库,可以使用cx_oracle模块 - 使用如下命令 ...

  7. asp.netcore oracle,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...

    Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库 1.前言 本次主要采用Asp.net core3.1 ...

  8. asp连接oracle 服务端,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...

    Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库 1.前言 本次主要采用Asp.net core3.1 ...

  9. linux上 python使用cx_Oracle 连接 oracle 9i

    上次用python写过一段代码, 需要读取数据库,然后数据库是很久之前的,还是9i的版本,所以连接的时候就报错. 因为写这篇文章离我写这段代码已经过去了一段时间,而且当时操作的linux也不在旁边.所 ...

最新文章

  1. 【数据蒋堂】第15期:开放的计算能力为数据库瘦身
  2. html:(27):类和ID选择器的区别和子选择器
  3. 2006年9月全国计算机等级考试三级数据库技术笔试试卷(含有答案)
  4. 中国机载预警雷达市场趋势报告、技术动态创新及市场预测
  5. Json 转换 1 转成 true 0 转成false
  6. 利用python调用PSS/E进行电力系统仿真
  7. 目标检测(一)目标检测算法综述
  8. 《 PHP+H5全栈工程师培训项目实战》
  9. 2022年3月15日黑马第三天
  10. CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理(二)
  11. 怎样读书(繁体版)读书笔记
  12. php 公众号 模板消息id如何获取_微信公众号后台模板消息如何实现发送的功能...
  13. 1838公共政策概论 (2)
  14. js垃圾回收机制,内存泄露和内存溢出,解决闭包产生的内存泄露详解
  15. 【微电网优化】基于matlab粒子群算法求解综合能源系统优化问题【含Matlab源码 1969期】
  16. css实现 拟态按钮
  17. 黑猫带你学UFS协议第11篇:两万字详解UFS协议信息单元(UPIU)
  18. 流程引擎动态任务实现(收发文流程案例)
  19. NSIS 之初体验 制作打印机i5100windows安装程序
  20. 图像的频谱特性物理意义:

热门文章

  1. 【控制】《多智能体机器人系统信息融合与协调》范波老师-第7章-基于 Markov 对策的多 Agent 协调
  2. A组包含的前导码数( sizeOfRA-PreamblesGroupA)
  3. w ndows8怎么连接网络,(Wndows8.1优化设置全面解析.doc
  4. “不厚道”的程序员:年后第一天上班就提辞职?
  5. 对于读取PDF模板表单,中文无序问题
  6. HTTP,FTP,TCP,UDP及SOCKET
  7. windows批量创建用户
  8. Delphi从Internet下载文件
  9. IOS中实现设备摇动检测
  10. Extjs EditorGridPanel中ComboBox列的显示问题