亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將多個 blob 轉換為 pdf

將多個 blob 轉換為 pdf

絕地無雙 2021-12-21 10:36:23
我有多個 blob 塊,所有 28K 字節大小,除了最后一個可以相同或更少。x.pdf 有 94 個塊。代碼循環遍歷 94 個塊并無錯誤地結束。任何人都使用多個 blob 來創建單個文件。已經使用 PL/SQL 創建了 275K 文件,現在停留在大約 4K,這對于 UTL_FILE 函數來說似乎太大了。con = cx_Oracle.connect('sysadm/password@mydb')cur = con.cursor() sql = 'select count(*) from chunk_record where filename = :sfn'cur.execute(sql, sfn = 'x.pdf')z = cur.fetchone()[0]y = 0with codecs.open('x.pdf', encoding='utf-8', mode='wb+') as file:    bcur = con.cursor()    for y in range (z):        print(y)        bsql = 'select file_data from chunk_record where filename = :sfn and file_seq = :seq'        bcur.execute(bsql, sfn = 'x.pdf', seq = y)        if type(bcur.fetchone()[0]) is cx_Oracle.BLOB:             file.write(bcur.fetchone()[0].read())    bcur.close()file.close()cur.close()con.close()下面的python代碼正在生成大小為零的x.pdf。當我嘗試以 pdf 格式打開時,它會出錯。大小應該在28K*93 ~ 28K*94之間
查看完整描述

2 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

with open('x.pdf', mode='a') as file:

將 wb+ 更改為 a 解決了問題,謝謝。


查看完整回答
反對 回復 2021-12-21
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

條件type(row[0]) is cx_Oracle.BLOB始終為假。由于cx_Oracle.BLOB是列型出現在結果集中描述,但類是cx_Oracle.LOB如此以檢查代替:


row = bcur.fetchone()

if isinstance(row[0], cx_Oracle.LOB):

    file.write(row[0].read())

該文件最終為空的原因是它從未被寫入。


其余的答案是正確的。


你為什么用編碼打開文件?它應該是不應轉碼的二進制數據。


代替 with codecs.open('x.pdf', encoding='utf-8', mode='wb+') as file:


和 with open('x.pdf', mode='wb+') as file:


查看完整回答
反對 回復 2021-12-21
  • 2 回答
  • 0 關注
  • 391 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號