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 07 Python
浅析Python中的多重继承
Apr 28 Python
python使用opencv读取图片的实例
Aug 17 Python
Python开发的HTTP库requests详解
Aug 29 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
Python中利用xpath解析HTML的方法
May 14 Python
Python tkinter label 更新方法
Oct 11 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
Python实现删除排序数组中重复项的两种方法示例
Jan 31 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
python3排序的实例方法
Oct 20 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读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
PHP 如何利用phpexcel导入数据库
2013/08/24 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
js中Number数字数值运算后值不对的解决方法
2017/02/28 Javascript
Angular多选、全选、批量选择操作实例代码
2017/03/10 Javascript
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
vue-cli3自动消除console.log()的调试信息方式
2020/10/21 Javascript
Python中decorator使用实例
2015/04/14 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
如何在python中执行另一个py文件
2020/04/30 Python
python设置中文界面实例方法
2020/10/27 Python
python 图像增强算法实现详解
2021/01/24 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的示例代码
2021/02/24 HTML / CSS
台湾最大网路书店:博客来
2018/03/18 全球购物
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
新春寄语大全
2014/04/09 职场文书
学生会辞职信
2015/03/02 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
关于感恩的素材句子(38句)
2019/11/11 职场文书