Python连接oracle数据库的基本操作
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数据库的基本操作的更多相关文章
- Python 连接 Oracle数据库
1.环境设置 [root@oracle ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@oracle ~]# python - ...
- Python 连接Oracle数据库
连接:python操作oracle数据库 python——连接Oracle数据库 python模块:cx_Oracle, DBUtil 大概步骤: 1. 下载模块 cx_Oracle (注意版本) ...
- 【python】python连接Oracle数据库
python连接Oracle数据库 查看Oracle版本 select * from v$version 下载对应版本的InstantClient 下载网址 InstantClient 1.解压Ins ...
- python——连接Oracle数据库
前言 Python自带的模块中有很多操纵文件的.我们可以把文件的数据读出来,经过处理还可以将数据写入文件中.但是对于数据的管理和分析来说,数据库还是专业一些.如果Python能和数据库结合在一起,那么 ...
- Python连接oracle数据库 例子一
step1:下载cx_Oracle模块,cmd--pip install cx_Oracle step2: 1 import cx_Oracle #引用模块cx_Oracle 2 conn=cx_Or ...
- 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 ...
- python 连接oracle 数据库
我们在测试中可能需要对oracle 数据库进行操纵,比如这样一个场景,在往oracle 里面插数据的同时,另一个工具从里面读,如何能保证读出来的数据是有顺序的,即:先插入进去的先读出来,根据这个场景们 ...
- windows下python连接oracle数据库
1.首先安装cx_Oracle包2.解压instantclient-basic-windows.x64-11.2.0.4.0.zip到c:\oracle3.拷贝instantclient_11_2下所 ...
- Matlab如何连接Oracle数据库及基本操作
语言和语法都是相通的,了解Oracle的连接和处理,对于其他的数据库也是类似的. 一 通过ODBC实现到oracle的连接 )控制面板->管理工具->ODBC数据源->在系统DSN中 ...
随机推荐
- Your branch and remoteBranchName have diverged solution
(zhuan)git pull时解决分支分叉(branch diverged)问题 git pull时出现分支冲突(branch diverged) $ git status # On branch ...
- js 金额用逗号隔开
function money(s, n) { n = n > 0 && n <= 20 ? n : 2; s = parseFloat((s + "") ...
- linux相关命令整理
三剑客 awk grep sed
- Mysql优化策略
总的来说:1.数据库设计和表创建时就要考虑性能 2.sql的编写需要注意优化 3.分区.分表.分库 设计表的时候: 1.字段避免null值出现,null值很难查询优化且占用额外的索引空间,推荐默认数字 ...
- model 字段参数 choice
class Banner(NewsBase): ''' 轮播图 ''' PRI_CHOICES = [ # 优先级的限制选择范围 (1,'第一级'), (2,'第二级'), (3,'第三级'), (4 ...
- rhce 第十题 配置NFS服务
配置NFS服务 在system1配置NFS服务,要求如下: 以只读的方式共享目录/public,同时只能被group8.example.com域中的系统访问 以读写的方式共享目录/protected, ...
- Codeforces Round #552 (Div. 3) D题
题目网站:http://codeforces.com/contest/1154/problem/D 题目大意:给出n个数(0或1),还有a , b, a是蓄电池容量,b是电池容量,数为1时蓄电池可以充 ...
- vue 树形下拉框 亲测 好用
https://vue-treeselect.js.org/ 顺带说一个开发中使用这个组件遇到的问题,关于回显之后无法修改的问题 找了很长时间 原因是数据类型导致的问题,数组里面应该是数字类型,直接 ...
- Webmagic 爬虫框架 爬取马蜂窝、携程旅游、汽车之家游记信息
WebMagic学习 遇到的问题 Log4j错误 解决:在src目录下添加配置文件 log4j.properties log4j.rootLogger=INFO, stdout, file log4j ...
- hbase-连接流程
root和meta表 在版本0.9.8之前,存在root表,之后的版本中去除了root表,meta表主要记录了每个表在region的分布情况. meta结构 从表格中可以看出,rowkey格式:tab ...