這篇文章給大家分享的是有關(guān)python如何鏈接oracle數(shù)據(jù)庫(kù)以及實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪改查操作的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
創(chuàng)新互聯(lián)公司為客戶(hù)提供專(zhuān)業(yè)的做網(wǎng)站、網(wǎng)站建設(shè)、程序、域名、空間一條龍服務(wù),提供基于WEB的系統(tǒng)開(kāi)發(fā). 服務(wù)項(xiàng)目涵蓋了網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站程序開(kāi)發(fā)、WEB系統(tǒng)開(kāi)發(fā)、微信二次開(kāi)發(fā)、手機(jī)網(wǎng)站開(kāi)發(fā)等網(wǎng)站方面業(yè)務(wù)。1.首先,python鏈接oracle數(shù)據(jù)庫(kù)需要配置好環(huán)境。
我的相關(guān)環(huán)境如下:
1)python:Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32
2)oracle:11.2.0.1.0 64bit。這個(gè)是server版本號(hào),在鏈接oracle數(shù)據(jù)庫(kù)的時(shí)候還需要oracle的客戶(hù)端版,客戶(hù)端版本的下載也要參考python的版本,python是32位的客戶(hù)端下載也要用32位。
3)cx_Oracle:python鏈接oracle的驅(qū)動(dòng)包,這個(gè)需要自己安裝,https://pypi.python.org/pypi/cx_Oracle/5.3在這個(gè)網(wǎng)址中下載對(duì)應(yīng)的驅(qū)動(dòng),下載驅(qū)動(dòng)的時(shí)候一定要選好對(duì)應(yīng)的版本,我的python是3.6的32位版本,所以在下載驅(qū)動(dòng)的時(shí)候也要選擇對(duì)應(yīng)的版本,我選擇的版本是cx_Oracle-5.3-11g.win32-py3.6.exe (md5),下載后直接安裝運(yùn)行就行了,他會(huì)有一個(gè)自檢,如果沒(méi)有通過(guò)就說(shuō)明你的驅(qū)動(dòng)版本沒(méi)有下載對(duì)。
2.上面的工作做好之后,在剛才下載好的oracle客戶(hù)端版本中找到下面三個(gè)文件:oci.dll、oraocci11.dll、oraociei11.dll,將這幾個(gè)dll文件復(fù)制到
Python\Python36-32\Lib\site-packages文件夾中。
3.在python中輸入:
import cx_Oracle
沒(méi)有報(bào)錯(cuò)的話說(shuō)明驅(qū)動(dòng)安裝成功。
4.數(shù)據(jù)庫(kù)連接操作:
conn = cx_Oracle.connect('xzt/xzt@localhost/testdb')#這里的順序是用戶(hù)名/密碼@oracleserver的ip地址/數(shù)據(jù)庫(kù)名字 cur = conn.cursor() sql = "SELECT * FROM DUAL" cur.execute(sql) cur.close() conn.commit() conn.close()
5.數(shù)據(jù)庫(kù)查詢(xún):
import cx_Oracle conn = cx_Oracle.connect('xzt/xzt@localhost/testdb') cursor = conn.cursor () cursor.execute ("SELECT * FROM STUDENT_TB") rows = cursor.fetchall() #得到所有數(shù)據(jù)集 for row in rows: print("%d, %s, %s, %s" % (row[0], row[1], row[2], row[3]))#python3以上版本中print()要加括號(hào)用了 print("Number of rows returned: %d" % cursor.rowcount) cursor.execute ("SELECT * FROM STUDENT_TB") while (True): row = cursor.fetchone() #逐行得到數(shù)據(jù)集 if row == None: break print("%d, %s, %s, %s" % (row[0], row[1], row[2], row[3])) print("Number of rows returned: %d" % cursor.rowcount) cursor.close () conn.close ()
6.數(shù)據(jù)庫(kù)插入:
import cx_Oracle conn = cx_Oracle.connect('xzp/xzp@localhost/testdb') cursor = conn.cursor() cursor.execute ("CREATE TABLE INSERTTEST(ID INT, C1 VARCHAR(50), C2 VARCHAR(50), C3 VARCHAR(50))") cursor.execute ("INSERT INTO INSERTTEST (ID, COL1, COL2, COL3)VALUES(1213412, 'asdfa', 'ewewe', 'sfjgsfg')") cursor.execute ("INSERT INTO INSERTTEST (ID, COL1, COL2, COL3)VALUES(12341, 'ashdfh', 'shhsdfh', 'sghs')") cursor.execute ("INSERT INTO INSERTTEST (ID, COL1, COL2, COL3)VALUES(123451235, 'werwerw', 'asdfaf', 'awew')") conn.commit() #這里一定要commit才行,要不然數(shù)據(jù)是不會(huì)插入的 cursor.close() conn.close()
7案例:從某網(wǎng)站上面爬取彩票號(hào)碼
import re import urllib import cx_Oracle import urllib.request def getHtml(url): page = urllib.request.urlopen(url) html= page.read() return html def getNumber(html): reg = r'<li class="ball_red">(\d{2})</li>' reg2 = r'<li class="ball_blue">(\d{2})</li>' regqnumber = r'第 <font class="cfont2"><strong>(\d*)</strong></font>' number = re.compile(reg) numberblue = re.compile(reg2) qnumber = re.compile(regqnumber) numberlist = re.findall(number,html.decode('gbk')) numberblue = re.findall(numberblue,html.decode('gbk')) qnum = re.findall(qnumber,html.decode('gbk')) for number in numberblue: numberlist.append(number) for n in qnum: numberlist.append(n) print(numberlist) return numberlist #將查詢(xún)到的號(hào)碼入庫(kù) def RecodeToOracle(list): conn = cx_Oracle.connect('xzp/xzp@localhost/testdb.domain') cur = conn.cursor() sql = "INSERT INTO SSQ (REDNUM1,REDNUM2,REDNUM3,REDNUM4,REDNUM5,REDNUM6,BLUENUM,QNUMBER) VALUES ('%s','%s','%s','%s','%s','%s','%s','%s')"%(list[0],list[1],list[2],list[3],list[4],list[5],list[6],list[7]) cur.execute(sql) cur.close() conn.commit()#這里一定要提交,要不然是沒(méi)有辦法將數(shù)據(jù)入庫(kù)的 conn.close()#記得要關(guān)閉會(huì)話 def Geturl(html): reg = r'上一期:<a href="(.*)" rel="external nofollow" target="_blank">' url = re.compile(reg) urllist = re.findall(url,html.decode('gbk')) if len(urllist)!=0: print(urllist[0]) if urllist[0].index('http:')<0: urllist[0]='http:'+urllist[0] htmlbefore = getHtml(urllist[0]) # print(htmlbefore) numberlist = getNumber(htmlbefore) print(len(numberlist)) RecodeToOracle(numberlist) print(numberlist) Geturl(htmlbefore) else: return str1 = '網(wǎng)站地址' html1 = getHtml(str1) RecodeToOracle(getNumber(html1)) Geturl(html1)
上面的代碼用了遞歸運(yùn)算,循環(huán)讀取彩票信息,可以一直讀取到2003年第一期,由于使用的是遞歸,在性能上不是很好,代碼非常吃?xún)?nèi)存,電腦內(nèi)存不夠的朋友就不要嘗試了,容易死機(jī)。
感謝各位的閱讀!關(guān)于“python如何鏈接oracle數(shù)據(jù)庫(kù)以及實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪改查操作”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前標(biāo)題:python如何鏈接oracle數(shù)據(jù)庫(kù)以及實(shí)現(xiàn)數(shù)據(jù)庫(kù)增刪改查操作-創(chuàng)新互聯(lián)
文章鏈接:http://chinadenli.net/article14/djjjde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、App設(shè)計(jì)、域名注冊(cè)、網(wǎng)站維護(hù)、電子商務(wù)、網(wǎng)頁(yè)設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容