最近项目中需要用到Python调用oracle实现读写操作,踩过很多坑,历尽艰辛终于实现了。性能怎样先不说,有方法后面再调优嘛。现在把代码和注意点记录一下。

1. 所需Python工具库

cx_Oracle,pandas,可以使用通过控制台使用pip进行安装(电脑中已经安装)

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)

Python读写oracle数据库的更多相关文章

  1. python——连接Oracle数据库

    前言 Python自带的模块中有很多操纵文件的.我们可以把文件的数据读出来,经过处理还可以将数据写入文件中.但是对于数据的管理和分析来说,数据库还是专业一些.如果Python能和数据库结合在一起,那么 ...

  2. .Net 中读写Oracle数据库常用两种方式

    .net中连接Oracle 的两种方式:OracleClient,OleDb转载 2015年04月24日 00:00:24 10820.Net 中读写Oracle数据库常用两种方式:OracleCli ...

  3. python对oracle数据库的操作

    1          Oracle数据库 1.1       Oracle环境配置&客户端连接 1.1.1          下载安装Oracle绿色版客户端instantclient: 到o ...

  4. python操作oracle数据库-查询

    python操作oracle数据库-查询 参照文档 http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python- ...

  5. Python 连接 Oracle数据库

    1.环境设置 [root@oracle ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@oracle ~]# python - ...

  6. Python 连接Oracle数据库

    连接:python操作oracle数据库  python——连接Oracle数据库 python模块:cx_Oracle, DBUtil 大概步骤: 1. 下载模块 cx_Oracle (注意版本) ...

  7. python操作oracle数据库

    本文主要介绍python对oracle数据库的操作学习 包含:oracle数据库在Windows操作系统下的安装和配置.python需要安装的第三方拓展包以及基本操作的样例学习. 1          ...

  8. python链接oracle数据库以及数据库的增删改查实例

    初次使用python链接oracle,所以想记录下我遇到的问题,便于向我这样初次尝试的朋友能够快速的配置好环境进入开发环节. 1.首先,python链接oracle数据库需要配置好环境. 我的相关环境 ...

  9. Python操作Oracle数据库:cx_Oracle

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

随机推荐

  1. Node.js文件操作一

    Node.js和其他语言一样,也有文件操作.先不说node.js中的文件操作,其他语言的文件操作一般也都是有打开.关闭.读.写.文件信息.新建删除目录.删除文件.检测文件路径等.在node.js中也是 ...

  2. web前端--实现前后端分离的心得

    1.实现前后端分离的心得 2.前后端分离实践 3.谈谈前后端的分工协作 4.从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式) 4.1.REST风格框架实战:从MVC到前后端分离 ...

  3. c#基础学习(0630)之面向对象总习

    面向对象总习 1.封装.继承.多态 ****字段:存储数据,访问修饰符应该设置为private私有的 ****属性:保护字段,对字段的取值和赋值的限定 ****new关键字: 1.在堆中开辟空间(引用 ...

  4. ant编译apache-nutch-2.2.1结合mysql实现爬虫的安装配置全过程

    之前的数据抓取都是用的八爪鱼软件,老大突发奇想要我自己搞个爬虫来抓取数据,网上找找貌似apache的nutch比较合适,于是就开始安装这啥nutch. 对于一个linux零基础的人来说,还要先学学li ...

  5. 使用eclipse 开发lisp

    https://www.ibm.com/developerworks/cn/opensource/os-eclipse-lispcusp/ eclipse有一个插件,可以支持lisp的开发,叫cusp ...

  6. Node.js Cookie管理

    Cookie 管理 我们可以使用中间件向 Node.js 服务器发送 cookie 信息,以下代码输出了客户端发送的 cookie 信息: var express=require('express') ...

  7. template-web.js 真分页绑定表格

     <div class="layui-table-box">                        <div class="layui-tabl ...

  8. iOS字体打印

    //打印所以字体    NSArray *familyNames = [UIFont familyNames];    for(NSString *familyName in familyNames) ...

  9. Linux下svn的安装与部署

    最近工作碰到一个问题,我和一个同伙负责开发一个管理系统,基于原来的代码上进行修改,每当他修改之后,我要再修改都要和他确定是不是最新的文件,才能进行修改.非常影响工作的效率,所以在网上找了关于svn的使 ...

  10. BZOJ2227 [Zjoi2011]看电影(movie)

    Description \(k\)个座位,\(n\)个人依次过来,每人随机从\(k\)个座位中选择一个,并从它开始不停向后走直到遇到空座位坐下.求所有人都能坐下的概率(即没有人走到第\(k+1\)个位 ...