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.pswp.cn/news/542478.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542478.shtml
英文地址,請注明出處:http://en.pswp.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 編輯…