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实现simhash算法实例
Apr 25 Python
Python中最常用的操作列表的几种方法归纳
Apr 24 Python
解密Python中的描述符(descriptor)
Jun 03 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
Python中文分词工具之结巴分词用法实例总结【经典案例】
Apr 15 Python
python解决字符串倒序输出的问题
Jun 25 Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 Python
最新Python idle下载、安装与使用教程图文详解
Nov 28 Python
python基于openpyxl生成excel文件
Dec 23 Python
python 利用matplotlib在3D空间中绘制平面的案例
Feb 06 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
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
PHP5.3安装Zend Guard Loader图文教程
2014/09/29 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
php结合md5实现的加密解密方法
2016/01/25 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
PHP实现多级分类生成树的方法示例
2017/02/07 PHP
PHP如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
js日期联动示例
2014/05/02 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
2015/04/06 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
详细讲解JavaScript中的this绑定
2016/10/10 Javascript
jquery动态创建div与input的实例代码
2016/10/12 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
详解小程序之简单登录注册表单验证
2019/05/13 Javascript
微信小程序使用echarts获取数据并生成折线图
2019/10/16 Javascript
vue实现列表拖拽排序的功能
2020/11/02 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python 的描述符 descriptor详解
2016/02/27 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
使用Python实现画一个中国地图
2019/11/23 Python
jupyter notebook运行命令显示[*](解决办法)
2020/05/18 Python
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
董事长岗位职责
2013/11/30 职场文书
大学生村官工作感言
2014/01/10 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
Python中requests库的用法详解
2022/06/05 Python