欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用cx_Oracle模塊操作Oracle數(shù)據(jù)庫(kù)詳解

 更新時(shí)間:2018年05月07日 11:22:09   作者:my2010sam  
這篇文章主要介紹了Python使用cx_Oracle模塊操作Oracle數(shù)據(jù)庫(kù),結(jié)合實(shí)例形式較為詳細(xì)的分析了cx_Oracle模塊的下載、安裝及針對(duì)Oracle數(shù)據(jù)庫(kù)的連接、執(zhí)行SQL語(yǔ)句、存儲(chǔ)過(guò)程等相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Python使用cx_Oracle模塊操作Oracle數(shù)據(jù)庫(kù)。分享給大家供大家參考,具體如下:

ORACLE_SID參數(shù),這個(gè)參數(shù)是操作系統(tǒng)中用到的,它是描述我們要默認(rèn)連接的數(shù)據(jù)庫(kù)實(shí)例,對(duì)于一個(gè)機(jī)器上有多個(gè)實(shí)例的情況下,要修改后才能通過(guò) conn / as sysdba連接,因?yàn)檫@里用到了默認(rèn)的實(shí)例名。

簡(jiǎn)而言之,打個(gè)比方,你的名字叫小明,但是你有很多外號(hào)。你父母叫你小明,但是朋友都叫你的外號(hào)。

這里你的父母就是oracle實(shí)例,小明就是sid,service name就是你的外號(hào)。

sid用于實(shí)例區(qū)分各個(gè)數(shù)據(jù)庫(kù),service name用于外部鏈接。 它們可能是不同的,要注意你得到的是哪個(gè)名字,合理使用,否則遠(yuǎn)程連接別的數(shù)據(jù)庫(kù)可能出錯(cuò)。

前言

Python自帶的模塊中有很多操縱文件的。我們可以把文件的數(shù)據(jù)讀出來(lái),經(jīng)過(guò)處理還可以將數(shù)據(jù)寫(xiě)入文件中。但是對(duì)于數(shù)據(jù)的管理和分析來(lái)說(shuō),數(shù)據(jù)庫(kù)還是專(zhuān)業(yè)一些。如果Python能和數(shù)據(jù)庫(kù)結(jié)合在一起,那么就能結(jié)合兩種的優(yōu)勢(shì),提高效率。

工作中使用的是Oracle數(shù)據(jù)庫(kù),Python有一個(gè)模塊cx_Oracle可以與Oracle相連。要使用cx_Oracle,就要先下載。

1. 下載cx_Oracle

Python一個(gè)官方網(wǎng)站PyPI,上面有豐富的模塊。cx_Oracle就可以在PyPI中下載。打開(kāi)PyPI的網(wǎng)址https://pypi.python.org/pypi,在里面搜索cx_Oracle,即可找到該模塊,其下載地址為http://cx-oracle.sourceforge.net/。當(dāng)然也可以通過(guò)其它的途徑下載。

下載之后就可以使用了。

2. 使用流程

簡(jiǎn)單的使用流程如下:

①.引用模塊cx_Oracle
②.連接數(shù)據(jù)庫(kù)
③.獲取cursor
④.使用cursor進(jìn)行各種操作
⑤.關(guān)閉cursor
⑥.關(guān)閉連接

下面是一個(gè)簡(jiǎn)單的例子:

cx_Oracle.connect("用戶(hù)名 /  密碼@ Oracle服務(wù)器IP  /  Oracle的SERVICE_NAME")

獲得 Oracle的SERVICE_NAME:

su - oracle #切換至oracle用戶(hù)

env | grep ORACLE #查詢(xún)ORACLE的環(huán)境變量

ORACLE_SID=benguo # benguo就是SERVICE_NAME

import cx_Oracle                     #引用模塊cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')  #連接數(shù)據(jù)庫(kù)
c=conn.cursor()                      #獲取cursor
x=c.execute('select sysdate from dual')          #使用cursor進(jìn)行各種操作
x.fetchone()
c.close()                         #關(guān)閉cursor
conn.close()                       #關(guān)閉連接

例子:

#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對(duì)數(shù)據(jù)庫(kù)的操作主要有2方面:一個(gè)是寫(xiě)數(shù)據(jù),一個(gè)是讀數(shù)據(jù)。這2個(gè)方面的實(shí)現(xiàn)可以通過(guò)SQL語(yǔ)句實(shí)現(xiàn),也可以通過(guò)存儲(chǔ)過(guò)程實(shí)現(xiàn)。所以cx_Oracle的主要用法有:

①. 執(zhí)行SQL語(yǔ)句

②. 調(diào)用存儲(chǔ)過(guò)程和函數(shù)。

4. 執(zhí)行SQL語(yǔ)句

執(zhí)行SQL語(yǔ)句很簡(jiǎn)單,從上面的例子就可以看出。使用cursor.execute即可執(zhí)行。使用fetchone或fetchall即可將執(zhí)行結(jié)果讀出來(lái)。

下面一個(gè)例子是Insert語(yǔ)句,使用的變量綁定。

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的動(dòng)態(tài)SQL一樣,都是冒號(hào)將占位符,即代碼中的:1,對(duì)變量的復(fù)制就是傳入一個(gè)List,即代碼中的['nice']。有多少個(gè)變量,list中就應(yīng)該對(duì)應(yīng)多少個(gè)值,數(shù)目要一致,否則會(huì)報(bào)錯(cuò)。

執(zhí)行之后,可以使用連接的一個(gè)方法connect.commit(),將事務(wù)提交。

5. 調(diào)用存儲(chǔ)過(guò)程和方法

直接上代碼:

--存儲(chǔ)過(guò)程代碼:
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()

調(diào)用存儲(chǔ)過(guò)程使用的是cursor.callproc方法。上面的存儲(chǔ)過(guò)程中,一個(gè)變量的值是OUT型的,在Python中,對(duì)OUT型的變量賦值,主要該變量的長(zhǎng)度不能小于存儲(chǔ)過(guò)程中的。

--函數(shù)代碼:
CREATE OR REPLACE function F_DEMO(V1 VARCHAR2) RETURN VARCHAR2 IS
BEGIN
  RETURN V1;
END;

#Python代碼:
import cx_Oracle
conn=cx_Oracle.connect('load/123456@localhost/ora11g')
c=conn.cursor()
str1='nice'
str2=c.callfunc('f_demo',cx_Oracle.STRING,[str1])
print(str2)
c.close()
conn.close()

調(diào)用函數(shù)使用的方法是cursor.callfunc。這個(gè)與調(diào)用存儲(chǔ)過(guò)程不同之處在于,它需要指定傳輸參數(shù)的類(lèi)型。

結(jié)束

通過(guò)cx_Oracle,可以是Python與Oracle數(shù)據(jù)庫(kù)相互溝通,這樣兩者就可以長(zhǎng)處互補(bǔ)。

比如,可以將Python當(dāng)成一個(gè)數(shù)據(jù)收集的工具,可以從Web,從文件中獲取數(shù)據(jù),然后將這些數(shù)據(jù)保存到Oracle數(shù)據(jù)庫(kù)中,在Oracle數(shù)據(jù)庫(kù)上進(jìn)行數(shù)據(jù)的進(jìn)一步分析。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • python獲取交互式ssh shell的方法

    python獲取交互式ssh shell的方法

    今天小編就為大家分享一篇python獲取交互式ssh shell的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python pathlib模塊使用方法及實(shí)例解析

    Python pathlib模塊使用方法及實(shí)例解析

    這篇文章主要介紹了Python pathlib模塊使用方法及實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 用python實(shí)現(xiàn)域名資產(chǎn)監(jiān)控的詳細(xì)步驟

    用python實(shí)現(xiàn)域名資產(chǎn)監(jiān)控的詳細(xì)步驟

    域名資產(chǎn)監(jiān)控,通過(guò)輸入一個(gè)主域名,找到該域名對(duì)應(yīng)的ip地址所在的服務(wù)器的端口開(kāi)閉情況,本文重點(diǎn)給大家介紹用python實(shí)現(xiàn)域名資產(chǎn)監(jiān)控的問(wèn)題,需要的朋友可以參考下
    2021-11-11
  • 淺析Python模塊之間的相互引用問(wèn)題

    淺析Python模塊之間的相互引用問(wèn)題

    這篇文章主要介紹了Python模塊之間的相互引用問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • 基于python實(shí)現(xiàn)智能用例生成工具

    基于python實(shí)現(xiàn)智能用例生成工具

    這篇文章主要為大家詳細(xì)介紹了如何基于python實(shí)現(xiàn)智能用例生成工具,即根據(jù)輸入的功能點(diǎn),生成通用測(cè)試點(diǎn),感興趣的小伙伴可以跟隨小編一起了解下
    2023-09-09
  • 淺談python jieba分詞模塊的基本用法

    淺談python jieba分詞模塊的基本用法

    本篇文章主要介紹了淺談python jieba分詞模塊的基本用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 詳解Python中的GIL(全局解釋器鎖)詳解及解決GIL的幾種方案

    詳解Python中的GIL(全局解釋器鎖)詳解及解決GIL的幾種方案

    這篇文章主要介紹了詳解Python中的GIL(全局解釋器鎖)詳解及解決GIL的幾種方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python迭代器實(shí)例簡(jiǎn)析

    python迭代器實(shí)例簡(jiǎn)析

    這篇文章主要介紹了python迭代器,以一個(gè)簡(jiǎn)單實(shí)例的形式分析了Python中迭代器的用法及注意事項(xiàng),需要的朋友可以參考下
    2014-09-09
  • python使用Berkeley DB數(shù)據(jù)庫(kù)實(shí)例

    python使用Berkeley DB數(shù)據(jù)庫(kù)實(shí)例

    這篇文章主要介紹了python使用Berkeley DB數(shù)據(jù)庫(kù)的方法,以實(shí)例形式講述了完整的操作過(guò)程,并總結(jié)了具體的操作步驟,非常具有實(shí)用性,需要的朋友可以參考下
    2014-09-09
  • 解決Python字典寫(xiě)入文件出行首行有空格的問(wèn)題

    解決Python字典寫(xiě)入文件出行首行有空格的問(wèn)題

    下面小編就為大家?guī)?lái)一篇解決Python字典寫(xiě)入文件出行首行有空格的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09

最新評(píng)論