Python读写及备份oracle数据库操作示例


Posted in Python onMay 17, 2018

本文实例讲述了Python读写及备份oracle数据库操作。分享给大家供大家参考,具体如下:

最近项目中需要用到Python调用oracle实现读写操作,踩过很多坑,历尽艰辛终于实现了。性能怎样先不说,有方法后面再调优嘛。现在把代码和注意点记录一下。

1. 所需Python工具库

cx_Oraclepandas,可以使用通过控制台使用pip进行安装(电脑中已经安装)

Python读写及备份oracle数据库操作示例

2. 实现查询操作

#工具库导入
import pandas as pd
import cx_Oracle
# 注:设置环境编码方式,可解决读取数据库乱码问题
import os
os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
#实现查询并返回dataframe
def query(table)
  host = "127.0.0.1"  #数据库ip
  port = "1521"   #端口
  sid = "test"  #数据库名称
  dsn = cx_Oracle.makedsn(host, port, sid)
  #scott是数据用户名,tiger是登录密码(默认用户名和密码)
  conn = cx_Oracle.connect("scott", "tiger", dsn)
  #SQL语句,可以定制,实现灵活查询
  sql = 'select * from '+ table
  # 使用pandas 的read_sql函数,可以直接将数据存放在dataframe中
  results = pd.read_sql(sql,conn)
  conn.close
  return results
test_data = query(test_table) # 可以得到结果集

3. 实现插入操作

#工具库导入
import pandas as pd
import cx_Oracle
#实现插入功能
def input_to_db(data,table):
  host = "127.0.0.1"  #数据库ip
  port = "1521"   #端口
  sid = "test"  #数据库名称
  dsn = cx_Oracle.makedsn(host, port, sid)
  #scott是数据用户名,tiger是登录密码(默认用户名和密码)
  conn = cx_Oracle.connect("scott", "tiger", dsn)
  #建立游标
  cursor = connection.cursor()
  #sql语句,注意%s要加引号,否则会报ora-01036错误
  query = "INSERT INTO"+table+"(name,gender,age) VALUES ('%s', '%s', '%s')"
  #逐行插入数据
  for i in range(len(data)):
    name= data.ix[i,0]
    gender= data.ix[i,1]
    age= data.ix[i,2]
   # 执行sql语句
    cursor.execute(query % (name,gender,age))
  connection.commit()
  # 关闭游标
  cursor.close()
  connection.close()
#测试插入数据库
#测试数据集
test_data = pd.DataFrame([['小明','男',18],['小芳','女',18]],index = [1,2],columns=['name','gender','age'])
#调用函数实现插入
input_to_db(test_data,test_table1)

4. Python备份Oracle数据库

#!/usr/bin/python
#coding=utf-8
import threading
import os
import time
#用户名
user = 'username'
#密码
passwd = 'password'
#备份保存路径
savepath = '/home/oracle/orcl_bak/'
#要备份的表
tables = ' tables=department,employee'
#备份周期
circle = 2.0
#备份命令
global bak_command
bak_command = 'exp '+user+'/'+passwd + ' file=' + savepath
def orclBak():
  now = time.strftime('%Y-%m-%d %H:%M:%S')
  command = bak_command + now + '.dmp' + tables
  print command
  if os.system(command) == 0:
    print '备份成功'
  else:
    print '备份失败'
  global t
  t = threading.Timer(circle, orclBak)
  t.start()
t = threading.Timer(circle, orclBak)
t.start()

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python使用MySQLdb访问mysql数据库的方法
Aug 03 Python
实例讲解Python中global语句下全局变量的值的修改
Jun 16 Python
python进阶_浅谈面向对象进阶
Aug 17 Python
python实现微信小程序自动回复
Sep 10 Python
python字符串替换re.sub()方法解析
Sep 18 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 Python
python 元组和列表的区别
Dec 30 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 11 Python
Pyhton模块和包相关知识总结
May 12 Python
python 闭包函数详细介绍
Apr 19 Python
Python selenium抓取微博内容的示例代码
May 17 #Python
Python实现的查询mysql数据库并通过邮件发送信息功能
May 17 #Python
Python实现读取txt文件并转换为excel的方法示例
May 17 #Python
cmd运行python文件时对结果进行保存的方法
May 16 #Python
Python基于lxml模块解析html获取页面内所有叶子节点xpath路径功能示例
May 16 #Python
Python使用Dijkstra算法实现求解图中最短路径距离问题详解
May 16 #Python
Python基于Floyd算法求解最短路径距离问题实例详解
May 16 #Python
You might like
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
2016/12/15 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
基于nodejs res.end和res.send的区别
2018/05/14 NodeJs
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
python3 mmh3安装及使用方法
2019/10/09 Python
python的slice notation的特殊用法详解
2019/12/27 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
大学应届生求职简历的自我评价
2013/10/08 职场文书
大学四年学习的自我评价分享
2013/12/09 职场文书
迷你西餐厅创业计划书范文
2013/12/31 职场文书
2014年大学生自我评价
2014/01/19 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
先进人物事迹材料
2014/12/29 职场文书
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS