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 相关文章推荐
Python3.x中自定义比较函数
Apr 24 Python
浅谈python迭代器
Nov 08 Python
Python多层装饰器用法实例分析
Feb 09 Python
深入分析python中整型不会溢出问题
Jun 18 Python
Python实现的简单排列组合算法示例
Jul 04 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
opencv 图像滤波(均值,方框,高斯,中值)
Jul 08 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
Jan 05 Python
python实现ROA算子边缘检测算法
Apr 05 Python
pytorch 实现在测试的时候启用dropout
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
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
JavaScript实现的in_array函数
2014/08/27 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
javascript中判断json的方法总结
2015/08/27 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
js实现文字跑马灯效果
2017/02/23 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
微信小程序实现tab左右切换效果
2020/11/15 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
pywinauto自动化操作记事本
2019/08/26 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
酒吧创业计划书
2014/01/18 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
小学生元旦广播稿
2014/02/21 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
HR求职自荐信范文
2014/06/21 职场文书
百日安全生产活动总结
2014/07/05 职场文书
幼儿园感谢信
2015/01/21 职场文书
《神奇的鸟岛》教学反思
2016/02/22 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
Python基础之条件语句详解
2021/06/16 Python
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS