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创建模块及模块导入的方法
May 27 Python
机器学习10大经典算法详解
Dec 07 Python
Linux下python与C++使用dlib实现人脸检测
Jun 29 Python
pandas计算最大连续间隔的方法
Jul 04 Python
Django Celery异步任务队列的实现
Jul 24 Python
Python OpenCV实现鼠标画框效果
Aug 19 Python
Python使用pymysql模块操作mysql增删改查实例分析
Dec 19 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
利用Python计算KS的实例详解
Mar 03 Python
如何学习Python time模块
Jun 03 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
教你使用pyinstaller打包Python教程
May 27 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
不懂JavaScript应该怎样学
2008/04/16 Javascript
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
理解Javascript闭包
2013/11/01 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
Javascript:为input设置readOnly属性(示例讲解)
2013/12/25 Javascript
jQuery控制cookie过期时间的方法
2015/04/07 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
2017/03/14 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
基于javascript实现碰撞检测
2020/03/12 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
JavaScript实现前端倒计时效果
2021/02/09 Javascript
详解appium+python 启动一个app步骤
2017/12/20 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
Python3.5文件修改操作实例分析
2019/05/01 Python
python网络编程之五子棋游戏
2020/05/14 Python
PyQt5.6+pycharm配置以及pyinstaller生成exe(小白教程)
2020/06/02 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
简述数组与指针的区别
2014/01/02 面试题
趣味活动策划方案
2014/02/08 职场文书
感恩小明星事迹材料
2014/05/23 职场文书
最常使用的求职信
2014/05/25 职场文书
2014年乡镇工会工作总结
2014/12/02 职场文书
个人收入证明格式
2015/06/24 职场文书
行为规范主题班会
2015/08/13 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
element多个表单校验的实现
2021/05/27 Javascript