连接数据库的几种方式:

语法:

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']

python连接oracle用法_【Python Oracle】使用cx_Oracle 连接oracle的简单介绍相关推荐

  1. python连接oracle数据库_深入理解Python3.6连接Oracle数据库

    Python3.6连接Oracle数据库的方法详解 本文实例讲述了Python3.6连接Oracle数据库的方法.分享给大家供大家参考,具体如下: 下载cx_Oracle模块模块: https://p ...

  2. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  3. python爬虫库的常见用法_$python爬虫系列(2)—— requests和BeautifulSoup库的基本用法...

    本文主要介绍python爬虫的两大利器:requests和BeautifulSoup库的基本用法. 1. 安装requests和BeautifulSoup库 可以通过3种方式安装: easy_inst ...

  4. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  5. python中 的用法_详解python中@的用法

    python中@的用法 @是一个装饰器,针对函数,起调用传参的作用. 有修饰和被修饰的区别,@function作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数定义). 代码1 结 ...

  6. python装饰器用法_深入浅出分析Python装饰器用法

    本文实例讲述了Python装饰器用法.分享给大家供大家参考,具体如下: 用类作为装饰器 示例一 最初代码: class bol(object): def __init__(self, func): s ...

  7. python中for循环的用法_@Python小白,一文让你掌握Python爬虫

    兴趣 我没事喜欢逛知乎,有一段时间看到了这个问题:利用爬虫技术能做到哪些很酷很有趣很有用的事情: http://t.cn/RptGOPx 觉得回答的一个个炒鸡酷炫 就对爬虫产生了浓厚的兴趣, 于是就开 ...

  8. 详解python中的用法_详解python中@的用法

    python中@的用法 @是一个装饰器,针对函数,起调用传参的作用. 有修饰和被修饰的区别,作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数定义). 代码1 def funa(d ...

  9. python文件的用法_关于.py文件的详细介绍

    这篇文章主要给大家介绍了在Python中.py文件打包成exe可执行文件的相关资料,文中介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧.前言最近做了几个简单的爬虫pytho ...

最新文章

  1. Go 知识点(03)— 非缓冲 channel 的长度始终为 0
  2. 图书管理系统5W1H
  3. 秘籍 | 机器学习数据集网址大全
  4. 注意力不集中的判断标准
  5. xmind快速上手使用教程,提高工作效率
  6. C#中的String编码转换
  7. c++STL容器的string
  8. 物联网火爆,开发者遇到大难题了!
  9. (转)fiddler使用简介--其二
  10. iOS 音频播放时听筒及扬声器切换
  11. atmega168p与328p_与Arduino“本是同根”——Atmel ATmega328P-XMINI开发板评测
  12. 一种传统发酵彝药有效抑制新冠病毒的复制体外研究
  13. 联想拯救者y7000电池耗电快_联想拯救者Y7000P使用一周体验
  14. WiFi共享二维码自动生成
  15. 小白学python——程序结构
  16. win10双显卡怎么切换amd和英特尔_手把手给你细说win10系统双显卡设置只使用独立显卡的流程...
  17. 三分钟快速了解怎么查询ip地址,怎么更换ip地址!
  18. CSS文本溢出打点显示
  19. python有趣的例子和故事_Python几个有趣和特别的小故事
  20. Redis协议spec(翻译)

热门文章

  1. 学生计算机教室管理规章制度,学校规章制度之小学信息技术教室管理制度
  2. python数据分析实况_机器学习竞赛分享:通用的团队竞技类的数据分析挖掘方法...
  3. 【趣图】测试刚写完的代码...
  4. Spring Cloud-Honghu Cloud分布式微服务云系统(一)
  5. 11.32 php扩展模块装安
  6. 光伏企业:再出海要上两节课
  7. AD恢复(3)使用AD回收站
  8. 【剑指Offer】面试招聘题目2:重建二叉树
  9. 理解Java的NIO
  10. centos 6.5 安装dotnet core 2.2