首頁 後端開發 Python教學 Python使用cx_Oracle模組操作Oracle資料庫詳解

Python使用cx_Oracle模組操作Oracle資料庫詳解

May 07, 2018 am 11:47 AM
oracle python 操作

這篇文章主要介紹了Python使用cx_Oracle模組操作Oracle資料庫,結a合實例形式較為詳細的分析了cx_Oracle模組的下載、安裝及針對Orcle資料庫的連接、執行SQL語句、預存程序等相關操作技巧,需要的朋友可以參考下

本文實例講述了Python使用cx_Oracle模組操作Oracle資料庫。分享給大家供大家參考,具體如下:

ORACLE_SID參數,這個參數是作業系統中用到的,它是描述我們要預設連接的資料庫實例,對於一個機器上有多個實例的情況下,要修改後才能透過conn / as sysdba連接,因為這裡用到了預設的實例名。

簡而言之,打個比方,你的名字叫小明,但是你有很多外號。你父母叫你小明,但是朋友都叫你的綽號。

這裡你的父母就是oracle實例,小明就是sid,service name就是你的外號。

sid用於實例區分各個資料庫,service name用於外部連結。它們可能是不同的,要注意你得到的是哪個名字,合理使用,否則遠端連接別的資料庫可能出錯。

前言

Python自帶的模組中有很多操縱檔案的。我們可以把文件的資料讀出來,經過處理也可以將資料寫入文件中。但對於資料的管理和分析來說,資料庫還是專業一些。如果Python能和資料庫結合在一起,那麼就能結合兩種的優勢,提高效率。

工作中使用的是Oracle資料庫,Python有一個模組cx_Oracle可以與Oracle連接。要使用cx_Oracle,就要先下載。

1. 下載cx_Oracle

Python一個官方網站PyPI,上面有豐富的模組。 cx_Oracle就可以在PyPI中下載。開啟PyPI的網址https://pypi.python.org/pypi,在裡面搜尋cx_Oracle,即可找到模組,其下載位址為http://cx-oracle.sourceforge.net/。當然也可以透過其它的途徑下載。

下載之後就可以使用了。

2. 使用流程

簡單的使用流程如下:

①.引用模組cx_Oracle
②.連接資料庫
③ .取得cursor
④.使用cursor進行各種動作
⑤.關閉cursor
⑥.關閉連線

下面是一個簡單的範例:

# cx_Oracle.connect("使用者名稱/  密碼@ Oracle伺服器IP  /  Oracle的SERVICE_NAME")

取得Oracle的SERVICE_NAME:

su - oracle #切換至oracle用戶

env | grep ORACLE #查詢ORACLE的環境變數

ORACLE_SID=benguo # benguo就是SERVICE_NAME

#
import cx_Oracle                     #引用模块cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')  #连接数据库
c=conn.cursor()                      #获取cursor
x=c.execute('select sysdate from dual')          #使用cursor进行各种操作
x.fetchone()
c.close()                         #关闭cursor
conn.close()                       #关闭连接
登入後複製

範例:

#coding:utf-8
import cx_Oracle
def main():
  conn = cx_Oracle.connect("zebra/zebra@192.168.0.113/benguo")
  cur =conn.cursor()
  r= cur.execute("select * from userinfo")
  print
  print r.fetchone()
if __name__ == '__main__':
  main()
登入後複製

3. 幾個用法

Python對資料庫的操作主要有2個面向:一個是寫數據,一個是讀數據。這2個面向的實作可以透過SQL語句實現,也可以透過儲存過程實現。所以cx_Oracle的主要用法有:

①. 執行SQL語句

②. 呼叫預存程序和函式。

4. 執行SQL語句

執行SQL語句很簡單,從上面的範例可以看出。使用cursor.execute即可執行。使用fetchone或fetchall即可將執行結果讀出來。

下面一個例子是Insert語句,使用的變數綁定。

import cx_Oracle
conn=cx_Oracle.connect('load/123456@loaclhost/ora11g')
c=conn.cursor()
x=c.execute('insert into demo(v) values(:1)',['nice'])
conn.commit();
c.close()
conn.close()
登入後複製

變數綁定和Oracle的動態SQL一樣,都是冒號將佔位符,也就是程式碼中的:1,變數的複製就是傳入一個List,即程式碼中的['nice']。有多少個變量,list中就應該對應多少個值,數目要一致,否則會報錯。

執行之後,可以使用連接的一個方法connect.commit(),將交易提交。

5. 呼叫預存程序與方法

直接上程式碼:

--存储过程代码:
CREATE OR REPLACE PROCEDURE P_DEMO(V1 IN VARCHAR2, V2 OUT VARCHAR2) IS
BEGIN
  V2 := V1;
END;
登入後複製

#Python代码:
import cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')
c=conn.cursor()
str1='nice'
str2='  '#需要有值,即len(str2)>=len(str1)
x=c.callproc('p_demo',[str1,str2])
print(str2)
c.close()
conn.close()
登入後複製

呼叫預存程序使用的是

cursor.callproc

方法。在上面的預存程序中,一個變數的值是OUT型的,在Python中,對OUT型的變數賦值,主要該變數的長度不能小於預存程序中的。

<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>--函数代码: CREATE OR REPLACE function F_DEMO(V1 VARCHAR2) RETURN VARCHAR2 IS BEGIN RETURN V1; END;</pre><div class="contentsignin">登入後複製</div></div>

#Python代码:
import cx_Oracle
conn=cx_Oracle.connect(&#39;load/123456@localhost/ora11g&#39;)
c=conn.cursor()
str1=&#39;nice&#39;
str2=c.callfunc(&#39;f_demo&#39;,cx_Oracle.STRING,[str1])
print(str2)
c.close()
conn.close()
登入後複製
#呼叫函數使用的方法是cursor.callfunc

。這與呼叫預存程序不同之處在於,它需要指定傳輸參數的類型。

結束

#########透過cx_Oracle,可以是Python與Oracle資料庫相互溝通,這樣兩者就可以長處互補。 ######例如,可以將Python當成一個資料收集的工具,可以從Web,從檔案中取得數據,然後將這些資料儲存到Oracle資料庫中,在Oracle資料庫上進行資料的進一步分析。 ######相關推薦:###

python使用openpyxl庫修改excel表格資料方法

Python使用email模組對郵件進行編碼和解碼

#

以上是Python使用cx_Oracle模組操作Oracle資料庫詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

Python與C:學習曲線和易用性 Python與C:學習曲線和易用性 Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

See all articles