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 25 Python
Python2.7编程中SQLite3基本操作方法示例
Aug 09 Python
使用python实现链表操作
Jan 26 Python
详解如何利用Cython为Python代码加速
Jan 27 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
Dec 16 Python
创建Django项目图文实例详解
Jun 06 Python
python中的函数递归和迭代原理解析
Nov 14 Python
pytorch实现MNIST手写体识别
Feb 14 Python
Python headers请求头如何实现快速添加
Nov 03 Python
Python 打印自己设计的字体的实例讲解
Jan 04 Python
python中Tkinter 窗口之输入框和文本框的实现
Apr 12 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的面试题集
2006/11/19 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
javascript创建和存储cookie示例
2014/01/07 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
学习jQuery中的noConflict()用法
2018/09/28 jQuery
js页面加载后执行的几种方式小结
2020/01/30 Javascript
用vue设计一个日历表
2020/12/03 Vue.js
python字符串排序方法
2014/08/29 Python
Python入门教程之if语句的用法
2015/05/14 Python
彻底搞懂Python字符编码
2018/01/23 Python
python实现批量解析邮件并下载附件
2018/06/19 Python
解读python如何实现决策树算法
2018/10/11 Python
Python numpy中矩阵的基本用法汇总
2019/02/12 Python
pygame实现五子棋游戏
2019/10/29 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
餐饮收银员岗位职责
2014/02/07 职场文书
年会主持词结束语
2014/03/27 职场文书
青年安全生产示范岗事迹材料
2014/05/04 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
投资入股合作协议书
2014/10/28 职场文书
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android
spring cloud 配置中心native配置方式
2021/09/25 Java/Android
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android