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
|
---|