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数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
python中的变量如何开辟内存
Jun 26 Python
用Python实现筛选文件脚本的方法
Oct 27 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
Python的pygame安装教程详解
Feb 10 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 Python
深入理解Python 多线程
Jun 16 Python
python smtplib发送多个email联系人的实现
Oct 09 Python
使用python向MongoDB插入时间字段的操作
May 18 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中的Session和Cookie
2013/06/21 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
php+jQuery实现的三级导航栏下拉菜单显示效果
2017/08/10 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
jquery处理json对象
2014/11/03 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
深入讲解AngularJS中的自定义指令的使用
2015/06/18 Javascript
javascript实现点击提交按钮后显示loading的方法
2015/07/03 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
2019/08/27 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Python创建日历实例
2014/08/21 Python
简单介绍使用Python解析并修改XML文档的方法
2015/10/15 Python
浅谈Python的文件类型
2016/05/30 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
django中的数据库迁移的实现
2020/03/16 Python
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
优质服务活动实施方案
2014/05/02 职场文书
党支部组织生活会整改方案
2014/09/30 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
Springboot中如何自动转JSON输出
2022/06/16 Java/Android