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的Django框架上部署ORM库的教程
Apr 20 Python
学习Python3 Dlib19.7进行人脸面部识别
Jan 24 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
Python3多线程操作简单示例
May 22 Python
python3.x实现base64加密和解密
Mar 28 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
使用opencv将视频帧转成图片输出
Dec 10 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
python实现学生成绩测评系统
Jun 22 Python
python中pathlib模块的基本用法与总结
Aug 17 Python
python 爬取B站原视频的实例代码
Sep 09 Python
python批量更改目录名/文件名的方法
Apr 18 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
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
YII框架常用技巧总结
2019/04/27 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
用jquery的attr方法实现图片切换效果
2017/02/05 Javascript
vue cli2.0单页面title修改方法
2018/06/07 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
详解Python核心对象类型字符串
2018/02/11 Python
Python lambda函数基本用法实例分析
2018/03/16 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
python中的for循环
2018/09/28 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
python3实现二叉树的遍历与递归算法解析(小结)
2019/07/03 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
使用phonegap查找联系人的实现方法
2017/03/31 HTML / CSS
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
百度JavaScript笔试题
2015/01/15 面试题
大专生简历的自我评价
2013/11/26 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
离婚协议书范文2016
2016/03/18 职场文书
Django数据库(SQlite)基本入门使用教程
2022/07/07 Python