Well,

I would store the pshysical file in a system folder. After this I would
save the path to the file in a table.
Then you could manage your files via sqlalchemy, listing all files and
working with them properly.

2013/2/26 dalia <dalia....@gmail.com>

> Hi Mauricio,
>
> Thanks for the reply. But importing BLOB specifically did not solve the
> problem. It is the same. In the INSERT statement, it looks like it is
> storing the file in Binary, but then when I query the database, it just
> shows (BLOB) and not the data.
>
> My requirement is to store .xls, .pdf and .doc files which contain images
> inside. The maximum file size can go up to 500KB. The file I'm testing with
> is a .xls file (size 5.5KB).
>
> That's why I chose to store them in a BLOB type. What do you suggest?
>
>
> On Tuesday, February 26, 2013 2:55:36 PM UTC, Mauricio de Abreu Antunes
> wrote:
>
>> Well,
>>
>> I think you need to import BLOB from dialects like:
>>
>> from sqlalchemy.dialects.oracle import BLOB
>>
>> in your Model you can describe the field type following it:
>>
>> MyBLOBColumn = Column(BLOB)
>>
>> Actually, IMHO i don't think saving large contents (binary from binary
>> files) as pure text in the database is the best option.
>>
>> 2013/2/26 dalia <dali...@gmail.com>
>>
>>> Hi,
>>>
>>> My intention is - to store .xls, .doc and .pdf files (with images in
>>> them) to store in a Oracle database and retrieve them. I'm using SQLAlchemy
>>> declarative code. The problem is, the data gets stored in the database but
>>> when I try to fetch the data back, it comes out as 0KB. I'm explaining the
>>> code and actions below -
>>>
>>> The model -
>>>
>>> class ReportFiles(Base):
>>>   __tablename__ = 'report_files'
>>>   id = Column(Integer, primary_key=True)
>>>   report_file = Column(BLOB)
>>>   file_name = Column(Unicode(50))
>>>
>>>
>>> Storing in database -
>>>
>>> content = cStringIO.StringIO()
>>> def store_in_db():
>>>    session = meta.Session()
>>>    self._get_file(content)     ### This is a function which generates
>>> the file (.xls / .doc / .pdf) in the content
>>>    contentstr = content.getvalue()
>>>    tbl = model.ReportFiles()
>>>    tbl.file_name = "test file"
>>>    tbl.report_file = contentstr
>>>    session.add(tbl)
>>>    session.commit()
>>>
>>> After the store, if I query the database, I get this result - not sure
>>> if it has stored alright -
>>>
>>> select file_name, length(report_file) from report_files;
>>>
>>> Name   |  Length
>>> --------------------------
>>> test file |  5632
>>>
>>> select file_name, report_file from report_files;
>>>
>>> Name | file
>>> ------------------
>>> test file | (BLOB)
>>>
>>> This doesn't look right because instead of the file, it just shows (BLOB)
>>>
>>> Retrieving from database - now I want the file to be downloaded as an
>>> excel (.xls) file
>>>
>>> def  _get_report(self):
>>>   tbl = model.ReportFiles
>>>   file = meta.Session.query(tbl).get(**id=1)
>>>   contentstr = file.report_file
>>>   response.content_type = 'application/vnd.ms-excel; charset=utf-8'
>>>   response.headers['Content-**disposition'] = 'attachment; filename =
>>> %s' %file.file_name
>>>   response.content_length = len(contentstr)
>>>   print "Length = %s" %len(contentstr)
>>>   return contentstr
>>>
>>>
>>> This downloads the .xls file fine. The print statement prints the file
>>> size as 5632. The download dialogue says the file size is 5.5KB. But when I
>>> open the file, it says 'file type not in right format'. When I open it in
>>> notepad, it is a 0 KB file. When I list the file in the directory, it is a
>>> 0KB file.
>>>
>>> Can somebody please tell me what is wrong here? Looks like the file
>>> doesn't get stored properly? Or am I missing something obvious? Or do I
>>> need to handle BLOB types differently?
>>>
>>> Many Thanks.
>>>
>>>
>>>
>>>
>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "sqlalchemy" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to sqlalchemy+...@**googlegroups.com.
>>> To post to this group, send email to sqlal...@googlegroups.com.
>>>
>>> Visit this group at 
>>> http://groups.google.com/**group/sqlalchemy?hl=en<http://groups.google.com/group/sqlalchemy?hl=en>
>>> .
>>> For more options, visit 
>>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>
>>> .
>>>
>>>
>>>
>>
>>
>>
>> --
>> *Mauricio de Abreu Antunes*
>> Mobile: (51)930-74-525
>> Skype: mauricio.abreua
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
*Mauricio de Abreu Antunes*
Mobile: (51)930-74-525
Skype: mauricio.abreua

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to