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获取本机mac地址和ip地址的方法
Apr 29 Python
python 简单的绘图工具turtle使用详解
Jun 21 Python
python线程池threadpool实现篇
Apr 27 Python
Python单元测试实例详解
May 25 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
Jan 30 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
Python如何使用k-means方法将列表中相似的句子归类
Aug 08 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
详解python实现可视化的MD5、sha256哈希加密小工具
Sep 14 Python
python脚本定时发送邮件
Dec 22 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访问网站
2013/10/30 PHP
PHP浮点数精度问题汇总
2015/05/13 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
基于jQuery的表格操作插件
2010/04/22 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
offsetHeight在OnLoad中获取为0的现象
2013/07/22 Javascript
JavaScript截取字符串的2个函数介绍
2014/08/27 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
jQuery使用ajax方法解析返回的json数据功能示例
2017/01/10 Javascript
js实现楼层导航功能
2017/02/23 Javascript
vue+webpack实现异步组件加载的方法
2018/02/03 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
重学JS之显示强制类型转换详解
2019/06/30 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
解读Python中degrees()方法的使用
2015/05/18 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
python基础教程项目五之虚拟茶话会
2018/04/02 Python
opencv-python 读取图像并转换颜色空间实例
2019/12/09 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
美德少年事迹材料
2014/01/23 职场文书
党员党性分析材料
2014/02/17 职场文书
授权委托书范本
2014/04/03 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
建国大业观后感600字
2015/06/01 职场文书
公司保密管理制度
2015/08/04 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
golang在GRPC中设置client的超时时间
2021/04/27 Golang
Django显示可视化图表的实践
2021/05/10 Python
Java数据结构之链表相关知识总结
2021/06/18 Java/Android