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. NetworkStream介绍说明

    如果服务器和客户端之间基于TCP连接的,他们之间能够依靠一个稳定的字节流进行相互传输信息,这也是NetworkStream的最关键的作用,有了这个神奇的协议,NetWorkStream便能向其他流一样 ...

  2. error: undefined reference to 'android::hardware::details::return_status::~return_status()'

    use hidl , make fail. reason is:missing libs:libbinder

  3. Word 通过尾注插入参考文献

    一步:把鼠标移到论文要插入的位置,然后点击引用: 第二步:点击插入尾注: 第三步:点击视图,接着点击草稿: 第四步:再次点击引用,接着点击显示备注,左下角出现尾注矩形框菜单栏,选择尾注分隔符,可以删除 ...

  4. Android 网络编程的陷阱

    陷阱一,不要在主线程或者UI线程中建立网络连接 Androd4.0以后,不允许在主线程中建立网络连接,不然会出现莫名其妙的程序退出情况.正确的做法是在主线程中,创建新的线程来运行网络连接程序. // ...

  5. Alfred 3 如何设置默认搜索引擎(以百度搜索为例)

    前提条件: Alfred 3 已经安装在MAC中 首先要有破解的Alfred 3 安装在MAC PRO中,然后进入到以下栏目:Features-->web Search-->Add Cus ...

  6. rancher2.1.7 +jenkins +harbor 自动容器CI系统(通过rancher命令行)

    jenkins脚本执行示例: //环境定义与 cd $WORKSPACEmodule=news-usercd $module/case $deploy in deploy) //发布模块 //编译/o ...

  7. 在Ubuntu中使用JDB调试代码

    在Ubuntu中使用JDB调试代码 了解JDB JDB是JDK安装的一部分,是基于文本和命令行的调试工具,JDB是可以免费获取且平台独立的,缺点是只有命令行格式. JDB基础命令 在方法中设置断点st ...

  8. Unity PRO 2018.3.3f1 for MAC+完美pojie补丁!!!

    Unity Pro 2018 for mac是游戏开发必备的软件之一,Unity mac 版主要用于创建2D和3D跨平台游戏,比如三维视频游戏.实时三维动画.建筑可视化等类型,最新版本的Unity P ...

  9. python note 11 函数名的使用、闭包、迭代器

    1.函数名就是一个变量 def func(): print("我是一个小小的函数") a = func print(a) #输出变量存放地址 <function func a ...

  10. 解析ReentrantLock实现原理

    在Java中通常实现锁有两种方式,一种是synchronized关键字,另一种是Lock(Lock的实现主要有ReentrantLock.ReadLock和WriteLock).synchronize ...