最近项目中需要用到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. Nginx 为 Golang 配置 web 服务

    server { charset utf-; client_max_body_size 128M; #listen ; ## 监听 ipv4 上的 端口 #listen [::]: default_s ...

  2. elasticsearch 导入基础数据并索引之 geo_shape

    我们看到的图形, 实际是由点来完成的, 有2种类型的格子模型可用于地理星座, 默认使用的是geoHash, 还有一种4叉树(quad trees), 也可用于 判断形状与索引的形状关系 1), int ...

  3. PM2怎么开启ES6?

    node版本v6.14.2,无论是用配置文件 { "apps": [{ "name": "server", "script&quo ...

  4. Koa2实用入门

    koa2已发布了一段时间,可以考虑入手,参见Node.js最新Web技术栈(2016年4月) 本文主要是koa 2的文档解读和runkoa介绍,让大家对koa 2有一个更简单直接的理解 一.依赖Nod ...

  5. js拼图

    ;(function($){ function arrayIndexOf(r, num){ if( Array.prototype.indexOf ){ return r.indexOf(num); ...

  6. Oracle数据库之PL/SQL程序基础设计

    一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执 ...

  7. Oracle表闪回功能

    1.启用表闪回首先要在表上支持行移动(在数据字典中设置标识来标识该操作可能会改变行ID,即同一条数据闪回成功后主键都一样,但行ID其实已经发生变化了) SQL> alter table base ...

  8. MyBatis --- 配置步骤

    本文并非具体的细节,而是主要的配置步骤 概述 MyBatis 是半自动的ORM 框架,在MyBatis 整合 Spring Boot 的时候步骤比较繁琐,所以写下此篇纪录一下步骤. 使用 MyBati ...

  9. mysql中的坑

    1,MySQL建表中double类型不能限制数据长度! 2,……

  10. OracleServer总结进阶之系统分析(进阶完结)

    个人原创,转载请在文章头部明显位置注明出处:https://www.cnblogs.com/sunshine5683/p/10080102.html 在上一篇进阶中大概讲解了一些关于进阶方面的知识,今 ...