python excel导入oracle数据库_【Python代替Excel】12:Python操作oracle数据库

日常工作中,如果有数据库权限,那么在oracle中提取数据、在Python中处理是比较方便的。Python也提供了一个库专门操纵数据库。今天就专门来讲讲如何在Python中操作数据库。

准备工作

需要工具:oracle、PL/SQL、Python

import cx_Oracle

如果用anaconda prompt直接安装的话,可能会出现错误。最好在网站cx-Oracle下载对应版本(我下载的如下):

下载好之后,直接点击安装包按照提示安装即可。然后在anaconda里import。

SQL语言

先来复习一下几个简单的sql语句吧:

select * from table1 #查询table1的所有数据

create table test_table( name varchar(20), score number) #创建表test_table,包含name、score两列

insert into test_table(name,score) values('zoe',80) #插入一行数据

连接&操作数据库连接数据库

import cx_Oracle

import os

os.environ['NLS_LANG']='SIMPLIFIED CHINESE_CHINA.UTF8' #设置语言环境

db = cx_Oracle.connect('username','password','database') #连接数据库 用户名、密码、数据库名

cursor = db.cursor()

connect里填的,如下:创建表

create_table = """

create table py_table(

name varchar(20),

score number

)

""" #字符串里写SQL语句,用三个双引号括起来

create_flag = cursor.execute(create_table) #执行该SQL语句

运行完这两句,可以在数据库里看到新的表(如果没有,可能要刷新或者重启一下数据库)。插入数据

insert_data1 = """

insert into py_table(name,score) values('zoe',80)

"""

cursor.execute(insert_data1) #执行SQL语句

db.commit() #提交插入多条数据

scores = {

'Tom':100,

'Lily':60,

'Emily':85

}

#第一种 循环

for i in scores.items(): #遍历scores字典的键、值

cursor.execute('insert into py_table(name,score) values(:1,:2)',i) #i是一个元组,包含2个元素

#目前查到的方法,只能把所有列名写出来,然后:1、:2、、、、传入数据。

db.commit() #提交执行

#第二种 多条插入

scores1 = [(i,n) for i,n in scores.items()]

cursor.executemany('insert into py_table values(:1,:2)',scores1) # scores1是列表,里面是元组

db.commit() #提交执行

用executemany的速度会比第一种循环的要快,特别是数据多的时候。查询数据

sql1 = cursor.execute('select * from py_table') #查询数据

data1 = pd.DataFrame(sql1.fetchall()) #fetchall为取所有数据

data2 = sql1.fetchmany(10) #取10条数据绑定变量查询

有时候查询的条件是变化的,就需要用到绑定变量。

#查询zoe的数据

sql = cursor.execute("""select * from py_table where name=:name""",name='zoe') #:name为绑定变量

data = sql.fetchall()

#in查询

sql = cursor.execute("""select * from py_table where name in (:1,:2,:3)""",['zoe','Tom','Lily'])

data = sql.fetchall()

今天的连接Oracle数据库学会了吗?当然还有连接Mysql数据库,不过使用的库不一样,大家可以自行百度。

用Python插入数据库的时候,一定要注意数据的格式,如果与Oracle表的字段格式不匹配,就会出错。

不过使用Python连接数据库,最大的用处还是能方便在数据库查询数据,并且直接在Python中编程处理清洗了。

专栏列表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542478.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 金字塔 的shell命令,linux下保留文件系统下剩余指定数目文件的shell脚本

原文出处:http://www.jbxue.com/article/13808.html (原创文章,转载请注明出处)本节内容:保留文件系统下剩余指定数目的文件例子:#!/bin/bash#-------------------------------#Description: Back up your files#site: www.jbxue.…

前端干货之JS最佳实践

持续更新地址 https://wdd.js.org/js-best-pr... 1. 风格 一千个读者有一千个哈姆雷特,每个人都有自己的code style。我也曾为了要不要加分号给同事闹个脸红脖子粗,实际上有必要吗? 其实JavaScript已经有了比较流行的几个风格 JavaScript Sta…

python requests和urllib_Python——深入理解urllib、urllib2及requests(requests不建议使用?)...

深入理解urllib、urllib2及requestsPython 是一种面向对象、解释型计算机程序设计语言,由Guido vanRossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General PublicLicense)协议[1] 。Python语法简洁而清晰…

ssh查找linux端口,linux – 查找当前连接的端口号SSH

我正在使用SSH连接创建一个本地模拟器(未连接到Internet).我已经开始使用特定范围的端口号进行sshd,并对一系列设备进行NAT处理.我必须找到当前连接的端口号.OS CentOS 5.5OpenSSH 6.1我做了以下事情.它适用于正常使用(手动用户).但是当尝试严格的测试(自动化)时,似乎有时找不到…

this.getstate_Java线程类Thread.State getState()方法(带示例)

this.getstate线程类Thread.State getState() (Thread Class Thread.State getState()) This method is available in package java.lang.Thread.getState(). 软件包java.lang.Thread.getState()中提供了此方法。 This method is used to return the state of this thread. 此方…

Java资源大全中文版(Awesome最新版)

来源:http://www.cnblogs.com/best/p/5876559.html 目录 业务流程管理套件字节码操作集群管理代码分析编译器生成工具构建工具外部配置工具约束满足问题求解程序持续集成CSV解析数据库数据结构时间日期工具库依赖注入开发流程增强工具分布式应用分布式数据库发布文档…

运用多种设计模式的综合案例_SpreadJS 纯前端表格控件应用案例:表格数据管理平台...

由某科技公司研发的表格数据管理平台,是一款面向业务和企业管理系统定制开发的应用平台,包括类 Excel 设计器、PC应用端和移动应用端等应用模块。该平台具备强大的业务配置和集成开发能力,对于企业客户的信息系统在管理模式、业务流程、表单界…

linux定位哪个进程出发重启,定位Linux下定位进程被谁KILL

hezhaoaqiang2012-11-09 11:10可以请教你一个问题吗?关于arm的交叉编译。我是按照:http://blog.chinaunix.net/uid-27003388-id-3276139.html 去做的,但是走到 四、建立初始编译器(bootstrap gcc)下面的make install 它提示如下:m…

Java Integer类numberOfLeadingZeros()方法的示例

整数类numberOfLeadingZeros()方法 (Integer class numberOfLeadingZeros() method) numberOfLeadingZeros() method is available in java.lang package. 在java.lang包中提供了numberOfLeadingZeros()方法 。 numberOfLeadingZeros() method is used to returns the number o…

VS中C++ 项目重命名

应该都有过这样的经历,在Visual studio中创建解决方案,添加几个项目进去,然后开始愉快的敲代码...。写代码正欢的时候,却总是感觉那里有些不舒服,一细看,这项目名称取的真心挫,修改个吧。直接右…

Java GregorianCalendar getActualMinimum()方法与示例

GregorianCalendar类getActualMinimum()方法 (GregorianCalendar Class getActualMinimum() method) getActualMinimum() method is available in java.util package. getActualMinimum()方法在java.util包中可用。 getActualMinimum() method is used to get the actual minim…

axure9数据统计插件_WMDA:大数据技术栈的综合实践

一、概述WMDA是58自主开发的用户行为分析产品,同时也是一款支持无埋点的数据采集产品,只需要在第一次使用的时候加载一段SDK代码,即可采集全量、实时的PC、M、APP三端以及小程序的用户行为数据。同时,为了满足用户个性化的数据采集…

Java Collections unmodifiableCollection()方法与示例

集合类unmodifiableCollection()方法 (Collections Class unmodifiableCollection() method) unmodifiableCollection() method is available in java.util package. unmodifiableCollection()方法在java.util包中可用。 unmodifiableCollection() method is used to get an un…

openfoam安装中出现allmake error_如何更新OpenFOAM的版本?

这是协作翻译的第四章,翻译完感觉挺有意思的,分享给大家一起看看。4.更新OpenFOAM版本4.1 版本管理OpenFOAM以两种不同的方式分发。一种方式是使用Git仓库下载的仓库版本。仓库版本的版本号由附加的x标记,例如 OpenFOAM2.1.x。该版本会经常更…

java 根据类名示例化类_Java类类的requiredAssertionStatus()方法和示例

java 根据类名示例化类类的类requiredAssertionStatus()方法 (Class class desiredAssertionStatus() method) desiredAssertionStatus() method is available in java.lang package. requiredAssertionStatus()方法在java.lang包中可用。 desiredAssertionStatus() method is …

python中计算排列组合的函数_Python实现的排列组合计算操作示例

本文实例讲述了Python实现的排列组合计算操作。分享给大家供大家参考,具体如下:1. 调用 scipy 计算排列组合的具体数值>> from scipy.special import comb, perm>> perm(3, 2)6.0>> comb(3, 2)3.02. 调用 itertools 获取排列组合的全部…

java日历类add方法_Java日历setMinimalDaysInFirstWeek()方法与示例

java日历类add方法日历类setMinimalDaysInFirstWeek()方法 (Calendar Class setMinimalDaysInFirstWeek() method) setMinimalDaysInFirstWeek() method is available in java.util package. setMinimalDaysInFirstWeek()方法在java.util包中可用。 setMinimalDaysInFirstWeek(…

相同布局在不同手机上显示不同_不懂响应式,不同尺寸屏幕下的页面很难达到最佳效果...

让用户在不同设备和尺寸的屏幕下看的页面显示效果更佳,屏幕空间利用更高,操作体验更统一,交互方式更符合习惯。本文主要围绕什么是响应式,如何搭建响应系统,响应式网站解析 三个部分进行阐述,在项目中提前定…

Java ByteArrayInputStream markSupported()方法与示例

ByteArrayInputStream类markSupported()方法 (ByteArrayInputStream Class markSupported() method) markSupported() method is available in java.util package. markSupported()方法在java.util包中可用。 markSupported() method is used to check whether this ByteArrayI…

markdown 流程图_测试了12款Markdown编辑器,推荐一个最好用的!

有很多喜欢写博客的小伙伴问我,这个代码笔记的格式怎么弄的简洁又好看,虽然csdn里面有Markdown的书写模式,但是我还是想推荐一款比较好用的写笔记的编辑器 - Typora。相信很多小伙伴都在使用吧,这个一直是我最喜欢的 markdown 编辑…