Re: uploading files to a database

Mary Jane Boholst <[email protected]> Tue, 17 Oct 2006 11:25:07 +0100
Newsgroups gmane.comp.python.spyce.general
Organization IOP
Message-ID <[email protected]>
Hi there,
Sorry to bother you all again. I have managed to store something in the 
database however I am not sure if this is the binary or not as the files do 
not display correctly. Do I need to save the file as a binary version before 
entering to the db? I attach my code if it help explain what I have done. 
Thanks in advance for your help.
Regards,
MJ

On Thursday 12 October 2006 17:46, Jonathan Ellis wrote:
> you don't give your code but it looks like you are doing
> title=request.getpost(something), which returns a list, instead of
> request.getpost1
>
> On Thu, 12 Oct 2006 15:22:17 +0100, "Mary Jane Boholst"
>
> <[email protected]> said:
> > How do I store the file into a db? I have tried to do this but get the
> > following errors:
> >
> > SQLError: (ProgrammingError) not enough arguments for format string
> > 'INSERT
> > INTO uploads (title, data, type) VALUES (%s, %s, %s)' [['test'],
> > '/data/',
> > ['text/plain']]
> >
> > Stack:  /usr/share/spyce-2.1/sqlalchemy/engine/base.py:348, in
> > _executemany:
> >
> >
> > raise exceptions.SQLError(statement, parameters, e)
> >
> > /usr/share/spyce-2.1/sqlalchemy/engine/base.py:319, in _execute_raw:
> >
> >
> > self._executemany(cursor, statement, parameters, context=context)
> >
> > /usr/share/spyce-2.1/sqlalchemy/engine/base.py:282, in proxy:
> >
> >
> > self._execute_raw(statement, parameters, cursor=cursor, context=context)
> >
> > /usr/share/spyce-2.1/sqlalchemy/engine/base.py:286, in execute_compiled:
> >
> >
> > proxy(str(compiled), parameters)
> >
> > /usr/share/spyce-2.1/sqlalchemy/engine/base.py:270, in
> > execute_clauseelement:
> >
> >
> > return self.execute_compiled(elem.compile(engine=self.__engine,
> > parameters=param), *multiparams, **params)
> >
> > /usr/share/spyce-2.1/sqlalchemy/engine/base.py:246, in execute:
> >
> >
> > return Connection.executors[type(object).__mro__[-2]](self, object,
> > *multiparams, **params)
> >
> > /usr/share/spyce-2.1/sqlalchemy/orm/mapper.py:847, in save_obj:
> >
> >
> > c = connection.execute(statement, params)
> >
> > /usr/share/spyce-2.1/sqlalchemy/orm/unitofwork.py:599, in _save_objects:
> >
> >
> > task.mapper.save_obj(task.tosave_objects, trans)
> >
> > /usr/share/spyce-2.1/sqlalchemy/orm/unitofwork.py:645, in execute:
> >
> >
> > self._save_objects(trans)
> >
> > /usr/share/spyce-2.1/sqlalchemy/orm/unitofwork.py:377, in execute:
> >
> >
> > head.execute(self)
> >
> > /usr/share/spyce-2.1/sqlalchemy/orm/unitofwork.py:207, in flush:
> >
> >
> > flush_context.execute(echo=echo)
> >
> > /usr/share/spyce-2.1/sqlalchemy/orm/session.py:234, in flush:
> >
> >
> > self.uow.flush(self, objects, echo=self.echo_uow)
> >
> > /usr/share/spyce-2.1/sqlalchemy/ext/sqlsoup.py:314, in flush:
> >
> >
> > objectstore.get_session().flush()
> >
> > uploadtest.spy:11, in (main):
> >
> >
> >     db.flush()
> >
> > I am not sure where the problem/s is/are. I feel as if I am going around
> > in
> > circles with this. If it will help I attach the file.
> > Thanks in advance,
> > MJ
> >
> > On Wednesday 11 October 2006 17:01, you wrote:
> > > You can get the data from request.file and then do whatever you like
> > > with it
> > >
> > > http://spyce.sourceforge.net/docs/fileupload.src.html
> > >
> > > On Wed, 11 Oct 2006 15:47:22 +0100, "Mary Jane Boholst"
> > >
> > > <[email protected]> said:
> > > > Hello again,
> > > > Is it possible to upload files to a database using spyce or even just
> > > > python? I am aware that files can be uploaded to the browser to
> > > > display but can these files be stored in a database?  Is it possible
> > > > to just upload files to the server and store information about the
> > > > file in the database?
> > > > Sorry to keep bothering you all.
> > > > Thanks in advance,
> > > > MJ
> > > >
> > > > ---------------------------------------------------------------------
> > > >---- Using Tomcat but need to do more? Need to support web services,
> > > > security? Get stuff done quickly with pre-integrated technology to
> > > > make your job easier
> > > > Download IBM WebSphere Application Server v.1.0.1 based on Apache
> > > > Geronimo
> > > > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121
> > > >642 _______________________________________________
> > > > Spyce-users mailing list
> > > > [email protected]
> > > > https://lists.sourceforge.net/lists/listinfo/spyce-users

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642

_______________________________________________
Spyce-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spyce-users
uploadtest.spy (text/html, 1.3 KB)
<spy:parent title="Upload Summer School Files" />
[[.import name=redirect]]
[[\ 
		if request.post('ct'):
			response.setContentType(request.post1('ct'))
			#print 'set contenttype<br>'
			if request.file('upfile')!=None:
				data=request.file('upfile').value
				filename=request.file('upfile').filename
				description=request.post1('description')
				ct=request.post1('ct')
				#print 'set variables<br> trying to insert to db<br>'
				db.uploads.insert(filename = filename, description = description, data = data, type = ct)
				db.flush()
				#print 'Done!<br>'
				redirect.external('view.spy')
				response.end()
			else:
				print 'file not properly uploaded'
			raise spyceDone
]]
<html><body>
 Choose a file to upload..<br>
  [[-- input forms --]]
  <hr>
  <table>
    <form action="[[=request.uri('path')]]" method=post 
        enctype="multipart/form-data">
      <tr>
        <td>File description:</td>
        <td><input type=text name=description></td>
      </tr>
	<tr>
        <td>file:</td>
        <td><input type=file name=upfile></td>
      </tr>
	<tr>
        <td>content-type:</td>
        <td><input type=text name=ct></td>
      </tr>
	<tr>
        <td><input type=submit handler=self.uploadfile value=OK></td>
      </tr>
    </form>
  </table>
</body></html>