Python讀寫Oracle的BLOB型別

2021-07-03 23:32:43 字數 2102 閱讀 9061

**:

這應該算是我遇到的難題之一了。表結構是這樣的:

create table

aurora

(date_forecast

varchar2(10),

filename

varchar2(24),

content

blob

);

1. blob寫操作

現在我有3個python的資料,分別是:

網上的資料說,插入包含blob的記錄,需要先插入空的blob物件,然後再update該記錄——這意味著,一次insert操作,至少要訪問3次資料庫。但是,這裡面有個問題無法解決:python如何給oracle的blob物件賦值?仔細閱讀oracle的文件,發現在sql語句中,可以使用冒號(:)來定義變數,而cx_oracle模組中也的確有cx_oracle.blob物件。至此,可以整理出這樣的乙個思路:

sqlstr = "insert into aurora (

date_forecast

, filename

, content

) values ('%s', '%s', :

blobdata

)" % (

date_forecast

, filename

)

請注意blobdata前邊的冒號,是定義了乙個叫做blobdata的oracle變數。然後,

cursor.setinputsizes(

blobdata

=cx_oracle.blob)

將blobdata變數定義為cx_oracle.blob的例項,終於讓python和oracle握手了。接下來,就是水到渠成的事情了,

cursor.execute(sqlstr, )

cursor.execute('commit')

2. blob讀操作

sqlstr = "select 

date_forecast

, filename

, content 

from (select 

date_forecast

, filename

, content 

from aurora order by 

date_forecast 

desc) where rownum < 2 "

cursor.execute(sqlstr)

result = cursor.fetchall()

此時,result[0][2]就是blob物件,python如何操作它呢?

print type(result[0][2])

才想起來它是乙個cx_oracle.blob物件,呵呵,繼續:

print dir(cx_oracle.blob)

發現cx_oracle.blob有乙個read方法,

print type(result[0][2].read())

終於看到熟悉的str型別,搞定!

Python讀寫Oracle的BLOB型別

2011 06 29 22 49 25 分類 牧碼經 標籤 python oracle blob 舉報 字型大小訂閱 這應該算是我遇到的難題之一了。表結構是這樣的 create table aurora date forecast varchar2 10 filename varchar2 24 c...

Python讀寫Oracle的BLOB型別

假定oracle的表結構是這樣的 create table aurora date forecast varchar2 10 filename varchar2 24 content blob 現在我有3個python的資料,分別是 fp.close 網上的資料說,插入包含blob的記錄,需要先插入...

Python讀寫Oracle資料庫

最近專案中需要用到python呼叫oracle實現讀寫操作,踩過很多坑,歷盡艱辛終於實現了。效能怎樣先不說,有方法後面再調優嘛。現在把 和注意點記錄一下。1.所需python工具庫 cx oracle,pandas,可以使用通過控制台使用pip進行安裝 電腦中已經安裝 2.實現查詢操作 工具庫匯入 ...