1,数据库连接和关闭

 # 引入cx_Oracle模块
import cx_Oracle

'''
方法一:用户名、密码和监听分开写
'''
db = cx_Oracle.connect('username/password@host/orcl')

'''
方法二:用户名、密码和监听写在一起
'''
db = cx_Oracle.connect('username','password','host/orcl')

'''
方法三:配置监听并连接
'''
tns = cx_Oracle.makedsn('host',1521,'orcl')
db = cx_Oracle.connect('username','password',tns)

2,数据库增删改查操作

     建立cursor并执行SQL语句:查询、更新、插入、删除,执行完成后,关闭游标,关闭数据库连接

  1,数据库查询操作

 # 导入cx_Oracle模块
import cx_Oracle as cx

# 连接数据库
db = cx.connect('username/password@host/orcl')

# 创建光标
cur = db.cursor()

'''
无需传递参数
'''
sql = '''SELECT * FROM TABLE'''

# 执行sql语句
cur.execute(sql)

'''
需要传递参数
'''

# 字典只有一个键值对
pm = {'id': 1}
cur.execute('SELECT * FROM TABLE WHERE ID = :id', pm)

# 字典有多个键值对
pa = {'id': 1, 'name': '卡卡'}
cur.execute('SELECT * FROM TABLE WHERE ID = :id AND NAME = :name', pa)

# 名字参数
cur.execute('''SELECT * FROM TABLE WHERE ID = :id''', id = 1)

cur.execute('''SELECT * FROM TABLE WHERE ID = :id AND NAME = :name''', id = 1, name = '卡卡')

# 位置参数,数据为元组,只有一个参数时,需加逗号
cur.execute('''SELECT * FROM TABLE WHERE ID = :a''', (1,))

cur.execute('''SELECT * FROM TABLE WHERE ID = :a AND NAME = :b''', (1, '卡卡'))

# cur.Prepare的用法,prepare之后,你再去execute的时候,就不用写上sql语句参数了
# 传递参数的方式与以上方式相同

cur.prepare('''SELECT * FROM TABLE WHERE ID = :id''')

# 注意,第一个参数是None
cur.execute(None, {'id': 1})

c_id = 1
c_name = "卡卡"

# %格式化字符串,%s格式化的字符串不带引号,%r格式化的字符串带单引号
sql = '''SELECT * FROM TABLE WHERE ID = %s''' % c_id

sql = '''SELECT * FROM TABLE WHERE ID = %s AND NAME = %r''' % (c_id, c_name)

# format格式化字符串
sql = '''SELECT * FROM TABLE WHERE ID = {} '''.format(c_id)

sql = '''SELECT * FROM TABLE WHERE ID = {0} AND NAME = '{1}' '''.format(c_id, c_name)

# 执行sql
cur.execute(sql)

'''
一次性返回所有的结果集(fetchall)
'''
rs = cur.fetchall()
print(rs)
for r in rs:
print(r)

'''
一次返回一行(fetchone)
'''
while(1):
rs = cur.fetchone()
if rs == None:
break
print(rs) # 关闭光标
cur.close()

# 数据库断开连接
db.close()

  2,插入、更新、删除操作后需要提交commit

 # 导入cx_Oracle模块
import cx_Oracle as cx

# 连接数据库
db = cx.connect('username/password@host/orcl')

# 创建光标
cur = db.cursor()

'''
INSERT
'''
sql = 'INSERT INTO TABLE(ID) VALUES(1)'

'''
UPDATE
'''
sql = 'UPDATE TABLE SET ID = 2'

'''
DELETE
'''
sql = 'DELETE FROM TABLE WHERE ID = 2'

# 执行sql
cur.execute(sql)

# 关闭光标
cur.close()

# 数据库提交
db.commit()

# 关闭数据库
db.close()

Python连接oracle数据库的基本操作的更多相关文章

  1. Python 连接 Oracle数据库

    1.环境设置 [root@oracle ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@oracle ~]# python - ...

  2. Python 连接Oracle数据库

    连接:python操作oracle数据库  python——连接Oracle数据库 python模块:cx_Oracle, DBUtil 大概步骤: 1. 下载模块 cx_Oracle (注意版本) ...

  3. 【python】python连接Oracle数据库

    python连接Oracle数据库 查看Oracle版本 select * from v$version 下载对应版本的InstantClient 下载网址 InstantClient 1.解压Ins ...

  4. python——连接Oracle数据库

    前言 Python自带的模块中有很多操纵文件的.我们可以把文件的数据读出来,经过处理还可以将数据写入文件中.但是对于数据的管理和分析来说,数据库还是专业一些.如果Python能和数据库结合在一起,那么 ...

  5. Python连接oracle数据库 例子一

    step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...

  6. python连接oracle数据库报错"DatabaseError: DPI-1047: 64-bit Oracle Client library cannot be loaded: "解决方案

    操作系统,python3.5, oracle_11, 均为64位:plsql 正常连接. 也顺利安装了cx_oracle 6.3,但是python进行连接的时候就会报错"DatabaseEr ...

  7. python 连接oracle 数据库

    我们在测试中可能需要对oracle 数据库进行操纵,比如这样一个场景,在往oracle 里面插数据的同时,另一个工具从里面读,如何能保证读出来的数据是有顺序的,即:先插入进去的先读出来,根据这个场景们 ...

  8. windows下python连接oracle数据库

    1.首先安装cx_Oracle包2.解压instantclient-basic-windows.x64-11.2.0.4.0.zip到c:\oracle3.拷贝instantclient_11_2下所 ...

  9. Matlab如何连接Oracle数据库及基本操作

    语言和语法都是相通的,了解Oracle的连接和处理,对于其他的数据库也是类似的. 一 通过ODBC实现到oracle的连接 )控制面板->管理工具->ODBC数据源->在系统DSN中 ...

随机推荐

  1. chrome浏览器和其它浏览器对scrollTop、scrollLeft的获取方法

    chrome浏览器不能通过document.documentElement.scrollTop来获得距上滚动距离,得到的值始终为0:需要用document.body.scrollTop来获取.其它浏览 ...

  2. vs2015下编译duilib的几个问题

    duilib下载地址在github 用vs2015打开,提示升级工程,确认后继续. 编译,UIGifAnim.cpp 323行报错 1>Control\UIGifAnim.cpp(324): e ...

  3. 有关Linux ipv6模块加载失败的问题

    有关Linux ipv6模块加载失败的问题 同事一个SUSE11sp3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载.     主要检查内容:   ...

  4. mui-H5获取当前手机通讯录

    mui.plusReady(function() { // 扩展API加载完毕,现在可以正常调用扩展API plus.contacts.getAddressBook(plus.contacts.ADD ...

  5. HATEOAS

    HATEOAS(Hypermedia as the engine of application state)是 REST 架构风格中最复杂的约束,也是构建成熟 REST 服务的核心.它的重要性在于打破 ...

  6. Pandas透视表和交叉表

    透视表 参数名 说明 values 待聚合的列的名称.默认聚合所有数值列 index 用于分组的列名或其他分组键,出现在结果透视表的行 columns 用于分组的列表或其他分组键,出现在结果透视表的列 ...

  7. phpstorm界面不停的indexing,不停的闪烁

    选择 File->Invalidate Caches / Restart...->Invalidate and Restart,就行了!

  8. 100-days: twenty-nine

    Title: The promise and perils of synthetic biology promise n.希望成功的前景 peril n.巨大的危险:险情,险境 释义:the peri ...

  9. CentOS 7 安装与卸载MySQL 5.7

    先介绍卸载 防止重装 yum方式 查看yum是否安装过mysql yum list installed mysql* 如或显示了列表,说明系统中有MySQL yum卸载 根据列表上的名字 yum re ...

  10. redis缓存与数据库一致性问题

    一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去. ...