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 基础学习教程
Feb 08 Python
Python实现扩展内置类型的方法分析
Oct 16 Python
pyqt5简介及安装方法介绍
Jan 31 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
详解Python3.6安装psutil模块和功能简介
May 30 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
python点击鼠标获取坐标(Graphics)
Aug 10 Python
python pygame实现挡板弹球游戏
Nov 25 Python
Python使用进程Process模块管理资源
Mar 05 Python
Python多个装饰器的调用顺序实例解析
May 22 Python
Python - 10行代码集2000张美女图
May 23 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
解决MySQL中文输出变成问号的问题
2008/06/05 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
详解PHP数组赋值方法
2015/11/07 PHP
php简单统计在线人数的方法
2016/05/10 PHP
替换php字符串中的单引号为双引号的方法
2017/02/16 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
JavaScript 拾漏补遗
2009/12/27 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
jquery按回车键实现表单提交的简单实例
2016/05/25 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
JavaScript编写一个贪吃蛇游戏
2017/03/09 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
ReactNative实现Toast的示例
2017/12/31 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
vue远程加载sfc组件思路详解
2019/12/25 Javascript
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
电厂厂长岗位职责
2014/01/02 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
班训口号大全
2014/06/18 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
老兵退伍标语
2014/10/07 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
python 详解turtle画爱心代码
2022/02/15 Python
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
详解CSS3浏览器兼容
2022/12/24 HTML / CSS