最近项目中需要用到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)

最新文章

  1. bzoj2342还是马拉车
  2. 2016HUAS暑假集训训练题 G - Oil Deposits
  3. 【应用笔记】【AN004】VB环境下基于RS-485的4-20mA电流采集
  4. Jetty和Tomcat的选择:按场景而定
  5. leetcode 137. Single Number II ----- java
  6. 【转义字符】HTML 字符实体< &gt: &等
  7. Qt之进程间通信(IPC)
  8. springMVC整合memcached
  9. Tomcat学习笔记 - 错误日志 - NetBeans配置tomcat出错情况总结 -- 部署错误: 启动 Tomcat 失败。-- '127.0.0.1' 不是内部或外部命令,也不是可运行的程序
  10. 转:C4项目中验证用户登录一个特性就搞定
  11. 怎么在一个list集合里面筛选重复的数据,在重复的数据中取最后添加的那条数据
  12. hibernate分页查询的实现
  13. springMVC实现REST开发详解(补充Json解析问题以及静态文件404错误解决办法)
  14. web爬虫,BeautifulSoup
  15. SVN设置全局忽略提交文件或者目录
  16. PHP使用Apache中的ab(ApacheBench)测试网站的并发量
  17. C语言中常用的字符串操作函数
  18. Windows server 自带的 .net版本
  19. elasticsearch 通过外网访问
  20. 记一次Apache Carbondata PR的经历

热门文章

  1. mysql预编译
  2. JBoss Web和Tomcat的区别
  3. Python jieba库的使用说明
  4. BG.Hive - part3
  5. ubuntu上安装redis
  6. 长期更新系列:C#知识点
  7. Maven项目下启动后Eclipse报错:org.springframework.web.context.ContextLoaderListener
  8. java.lang.NoSuchMethodError 报500
  9. Java Web应用开发工具
  10. JavaSE——转换流和缓冲流