2011-06-29 22:49:25
| 分類:
牧碼經| 標籤:
python
oracle
blob|舉報
|字型大小訂閱
這應該算是我遇到的難題之一了。表結構是這樣的:
create tableaurora
(date_forecast
varchar2(10),
filenamevarchar2(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 (請注意blobdata前邊的冒號,是定義了乙個叫做blobdata的oracle變數。然後,date_forecast
, filename
, content
) values ('%s', '%s', :
blobdata
)" % (
date_forecast
, filename
)
cursor.setinputsizes(將blobdata變數定義為cx_oracle.blob的例項,終於讓python和oracle握手了。接下來,就是水到渠成的事情了,blobdata
=cx_oracle.blob)
cursor.execute(sqlstr, )2. blob讀操作cursor.execute('commit')
sqlstr = "select此時,result[0][2]就是blob物件,python如何操作它呢?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()
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型別
這應該算是我遇到的難題之一了。表結構是這樣的 create table aurora date forecast varchar2 10 filename varchar2 24 content blob 1.blob寫操作 現在我有3個python的資料,分別是 網上的資料說,插入包含blob的記...
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.實現查詢操作 工具庫匯入 ...