| 1 | @transaction.atomic
|
|---|
| 2 | def fun():
|
|---|
| 3 | insertSQL = """insert into my_blob (id, date_created, date_updated, filename, blob_data,blob_size) \
|
|---|
| 4 | values (appstore_blob_sq.nextval, :1, :2, :3, :blobd,:5)"""
|
|---|
| 5 | self.cursor.execute(insertSQL,{'3':filename, '5' : filesize, 'blobd':blobd, '1' : dctime, '2' : dctime})
|
|---|
| 6 | #retrieve blob_data from the row so that we can add chunks to the LOB
|
|---|
| 7 | self.cursor.execute("select blob_data from appstore_blob where filename = :file_name for update of blob_data", file_name=filename)
|
|---|
| 8 | for row in self.cursor:
|
|---|
| 9 | offset = 0
|
|---|
| 10 | lob = row[0]
|
|---|
| 11 | writechunk_sz = lob.getchunksize()
|
|---|
| 12 | #compute the read chunk size
|
|---|
| 13 | factor = int(blob_writechunk_sz/writechunk_sz)
|
|---|
| 14 | if factor > 0:
|
|---|
| 15 | writechunk_sz *= factor
|
|---|
| 16 | lob.open()
|
|---|
| 17 | while True:
|
|---|
| 18 | chunk = filehandle.read(writechunk_sz)
|
|---|
| 19 | chk_len = len(chunk)
|
|---|
| 20 | #print "write chunk of sz: %s" % chk_len
|
|---|
| 21 | if chunk is None or chunk == "":
|
|---|
| 22 | break
|
|---|
| 23 | lob.write(chunk, offset+1)
|
|---|
| 24 | offset += chk_len
|
|---|
| 25 | lob.close()
|
|---|
| 26 | break
|
|---|