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遍历目录的方法小结
Apr 28 Python
Python中实现switch功能实例解析
Jan 11 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
python3.6.3转化为win-exe文件发布的方法
Oct 31 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
基于Python解密仿射密码
Oct 21 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
Python基于locals返回作用域字典
Oct 17 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
Python join()函数原理及使用方法
Nov 14 Python
python的变量和简单数字类型详解
Sep 15 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 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
推荐一篇入门级的Class文章
2007/03/19 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
JQuery触发radio或checkbox的change事件
2012/12/18 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
2014/09/03 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
js前端面试题及答案整理(一)
2016/08/26 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
深入解析Python中函数的参数与作用域
2016/03/20 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
python中常用的九种预处理方法分享
2016/09/11 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
对python 命令的-u参数详解
2018/12/03 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
python tornado使用流生成图片的例子
2019/11/18 Python
Python调用Windows命令打印文件
2020/02/07 Python
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
文秘专业自荐信
2013/10/14 职场文书
运动会的口号
2014/06/09 职场文书
争先创优心得体会
2014/09/12 职场文书
学生打架检讨书
2014/10/20 职场文书
刑事上诉状范文
2015/05/22 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
新兵入伍决心书
2015/09/22 职场文书
css3 filter属性的使用简介
2021/03/31 HTML / CSS
如何正确理解python装饰器
2021/06/15 Python
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android
Java 数组的使用
2022/05/11 Java/Android