假定oracle的表結構是這樣的:
create
table aurora(
date_forecast varchar2(10),
filename varchar2(24),
content blob
);
現在我有3個python的資料,分別是:
fp.close()網上的資料說,插入包含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')
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 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型別
這應該算是我遇到的難題之一了。表結構是這樣的 create table aurora date forecast varchar2 10 filename varchar2 24 content blob 1.blob寫操作 現在我有3個python的資料,分別是 網上的資料說,插入包含blob的記...
Python讀寫Oracle資料庫
最近專案中需要用到python呼叫oracle實現讀寫操作,踩過很多坑,歷盡艱辛終於實現了。效能怎樣先不說,有方法後面再調優嘛。現在把 和注意點記錄一下。1.所需python工具庫 cx oracle,pandas,可以使用通過控制台使用pip進行安裝 電腦中已經安裝 2.實現查詢操作 工具庫匯入 ...