最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python連接oracle數(shù)據(jù)庫操作實例及遇到的異常

 更新時間:2023年12月26日 09:52:43   作者:dsdasun  
這篇文章主要給大家介紹了關(guān)于python連接oracle數(shù)據(jù)庫操作實例及遇到的一些異常,Oracle是著名且廣泛使用的數(shù)據(jù)庫之一,而python的數(shù)據(jù)處理功能可以很好地利用這種連接性,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在進(jìn)行數(shù)據(jù)庫連接之前,一般都需要導(dǎo)入依賴的庫,通過專門的庫去處理對應(yīng)的數(shù)據(jù)庫連接,所以沒安裝對應(yīng)的處理庫的話,需要先進(jìn)行安裝、再導(dǎo)入,導(dǎo)入后即可正常使用。

一、安裝cx_Oracle

cx_Oracle:python鏈接oracle的驅(qū)動包,這個需要自己安裝,https://pypi.python.org/pypi/cx_Oracle/5.3在這個網(wǎng)址中下載對應(yīng)的驅(qū)動,下載驅(qū)動的時候一定要選好對應(yīng)的版本,我的python是3.6的32位版本,所以在下載驅(qū)動的時候也要選擇對應(yīng)的版本,我選擇的版本是cx_Oracle-5.3-11g.win32-py3.6.exe (md5),下載后直接安裝運(yùn)行就行了,他會有一個自檢,如果沒有通過就說明你的驅(qū)動版本沒有下載對。

在剛才下載好的oracle客戶端版本中找到下面三個文件:oci.dll、oraocci11.dll、oraociei11.dll,將這幾個dll文件復(fù)制到
Python\Python36-32\Lib\site-packages文件夾中。

二、導(dǎo)入庫

代碼如下(示例):

import cx_Oracle

三、數(shù)據(jù)庫操作實例

3.1 連接

import cx_Oracle
conn = cx_Oracle.connect('xzt/xzt@localhost/testdb')#這里的順序是用戶名/密碼@oracleserver的ip地址/數(shù)據(jù)庫名字
cursor = conn.cursor()
print('連接數(shù)據(jù)庫成功!')
sql = "select * from student"
all = cursor.execute(sql)
print(all.fetchall())

3.2數(shù)據(jù)庫查詢

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()要加括號用了
  
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 () 

3.3數(shù)據(jù)庫插入

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ù)是不會插入的 
  
cursor.close()  
conn.close()

3.4 實例從某網(wǎng)站上面爬取彩票號碼

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
 
	#將查詢到的號碼入庫
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()#這里一定要提交,要不然是沒有辦法將數(shù)據(jù)入庫的
	conn.close()#記得要關(guān)閉會話
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)

四、異常

4.1、運(yùn)行時,出現(xiàn)連接數(shù)據(jù)庫失敗:DatabaseError:DPI-1047

解決連接失敗問題

1、查看Oracle的版本號

#linux下查詢
sqlplus / as sysdba
select * from v$version;

2、進(jìn)入官網(wǎng),下載對應(yīng)Oracle版本

https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

將下載的包解壓,添加到環(huán)境變量

3.下載cx_Oracle包:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook

ctrl+f 搜索:cx_Oracle,進(jìn)入選擇匹配python版本的包

這里我的python版本是3.6 64位

cmd進(jìn)入下載cx_Oracle-8.1.0-cp36-cp36m-win_amd64.whl的目錄,以下是我本地目錄,應(yīng)修改成你自己的下載目錄安裝最新下載的包

pip install cx_Oracle-8.1.0-cp36-cp36m-win_amd64.whl

打開oracle版本的解壓包,進(jìn)入解壓后的目錄,C:\work\instantclient-basic-windows.x64-12.2.0.1.0\instantclient_12_2(換成你本地的目錄,這里是我本地的),把所有的.dll文件全部拷貝到python的根目錄

拷貝到目錄如下

4.在使用python連接時,需要注意以下點:

1、需要下載已安裝的oracle數(shù)據(jù)庫對應(yīng)的版本

2、需要下載與python版本對應(yīng)的cx_Oracle包

3、需要把oracle版本的ddl文件放置python安裝根目錄下

總結(jié)

到此這篇關(guān)于python連接oracle數(shù)據(jù)庫操作實例及遇到的異常的文章就介紹到這了,更多相關(guān)python連接oracle數(shù)據(jù)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python數(shù)據(jù)序列化技術(shù)總結(jié)

    Python數(shù)據(jù)序列化技術(shù)總結(jié)

    在現(xiàn)代軟件開發(fā)中,數(shù)據(jù)序列化是一個關(guān)鍵環(huán)節(jié),它允許我們將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為可存儲或可傳輸?shù)母袷?,Python提供了多種數(shù)據(jù)序列化技術(shù),每種技術(shù)都有其獨(dú)特的性能優(yōu)勢和適用場景,本文將詳細(xì)介紹幾種強(qiáng)大的Python數(shù)據(jù)序列化技術(shù),需要的朋友可以參考下
    2025-03-03
  • python網(wǎng)絡(luò)爬蟲基于selenium爬取斗魚直播信息

    python網(wǎng)絡(luò)爬蟲基于selenium爬取斗魚直播信息

    目前是直播行業(yè)的一個爆發(fā)期,由于國家對直播行業(yè)進(jìn)行整頓和規(guī)范,現(xiàn)在整個直播行業(yè)也在穩(wěn)固發(fā)展。隨著互聯(lián)網(wǎng)和網(wǎng)絡(luò)直播市場的快速發(fā)展,相信未來還有廣闊的發(fā)展前景。今天用selenium爬取一下斗魚直播信息將代碼分享給大家
    2022-03-03
  • Python中關(guān)于浮點數(shù)的冷知識

    Python中關(guān)于浮點數(shù)的冷知識

    這篇文章主要給大家介紹了Python中關(guān)于浮點數(shù)的冷知識,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python列表和數(shù)組的深入解析與最佳選擇指南

    Python列表和數(shù)組的深入解析與最佳選擇指南

    在Python的編程世界中,數(shù)據(jù)結(jié)構(gòu)猶如畫家手中的調(diào)色板,而列表(List)和數(shù)組(Array)則是其中最常用的兩種顏色,它們看似相似,實則各具特色,本文將帶您深入探索這兩種數(shù)據(jù)結(jié)構(gòu)的奧秘,助您在編程實踐中做出明智選擇,需要的朋友可以參考下
    2026-02-02
  • Python的Pandas庫中使用DataFrame篩選和刪除含特定值的行與列

    Python的Pandas庫中使用DataFrame篩選和刪除含特定值的行與列

    Pandas是一個強(qiáng)大的數(shù)據(jù)處理庫,提供了各種功能來操作和處理數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Python的Pandas庫中使用DataFrame篩選和刪除含特定值的行與列的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • 基于python實現(xiàn)微信收紅包自動化測試腳本(測試用例)

    基于python實現(xiàn)微信收紅包自動化測試腳本(測試用例)

    這篇文章主要介紹了基于python實現(xiàn)微信收紅包自動化測試腳本,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-07-07
  • 利用python讀取YUV文件 轉(zhuǎn)RGB 8bit/10bit通用

    利用python讀取YUV文件 轉(zhuǎn)RGB 8bit/10bit通用

    今天小編就為大家分享一篇利用python讀取YUV文件 轉(zhuǎn)RGB 8bit/10bit通用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python調(diào)用C/C++的方法解析

    Python調(diào)用C/C++的方法解析

    這篇文章主要介紹了Python調(diào)用C/C++的方法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Langchain集成管理prompt功能詳解

    Langchain集成管理prompt功能詳解

    這篇文章主要為大家介紹了Langchain集成管理prompt功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Django自定義分頁效果

    Django自定義分頁效果

    這篇文章主要為大家詳細(xì)介紹了Django自定義分頁效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06

最新評論

竹溪县| 弥渡县| 景谷| 大竹县| 湘阴县| 噶尔县| 山阳县| 娄底市| 收藏| 枝江市| 咸阳市| 保山市| 龙口市| 布尔津县| 沙河市| 龙游县| 延津县| 阿坝| 金平| 阜康市| 绥中县| 灵丘县| 高碑店市| 金门县| 博罗县| 嘉善县| 铁力市| 锡林郭勒盟| 普兰县| 宁南县| 舒城县| 集安市| 龙胜| 平遥县| 遂平县| 彩票| 三台县| 北宁市| 耿马| 大连市| 忻城县|