Hi people, new here - hope my question okay.

I have an issue with my tornado based web application using sqlalchemy for 
a postgresql database, where commits sometimes is not actually persisted to 
the database. An INSERT statement is done, the object gets and id and there 
are no errors, but no row is actually written. Like it is only duing a 
flush().

It might be similar to the problem described 
in 
https://groups.google.com/forum/#!searchin/sqlalchemy/tornado/sqlalchemy/A2qUbeWgbbY/U4HtFHSS7MgJ
 
except I don't get any errors.

Here is what I think is the relevant code. I have tried with non-scoped 
sessions, same issue. I can give more details if needed:

# config.py
> Session = scoped_session(sessionmaker()) 

# request.py
> class BaseHandler(RequestHandler):
>     def prepare(self):
>         self.session = Session()
>     def on_finish(self):
>         Session.remove()
>  
> # api.py
> class GroupService(BaseHandler):
>     def post(self, arguments):
>         ...
>         new_group = Group(
>             name=name,
>             manager_id=self.current_user.id,
>         )
>         self.session.add(new_group)
>         self.session.commit()


I have been running with echo=True to get some logging, and I can see that 
it appears that when it goes wrong no BEGIN and COMMIT are performed, only 
the INSERT. Here is the output (the POST log occurs at the end of the 
request):

> 2014-06-03 16:50:04,343:INFO:sqlalchemy.engine.base.Engine:log:INSERT INTO 
> "group" (created_at, updated_at, name, manager_id) VALUES (%(created_at)s, 
> %(updated_at)s, %(name)s, %(manager_id)s) RETURNING "group".id
> 2014-06-03 
> 16:50:04,343:INFO:sqlalchemy.engine.base.Engine:log:{'created_at': 
> datetime.datetime(2014, 6, 3, 16, 50, 4, 343333, tzinfo=tzlocal()), 
> 'updated_at': datetime.datetime(2014, 6, 3, 16, 50, 4, 343347, 
> tzinfo=tzlocal()), 'manager_id': '38655', name': u'Group name'}
> 2014-06-03 16:50:04,357:INFO:tornado.access:web:200 POST /groups 
> (xx.xx.xx.xx) 19.56ms


And an example where the group is commited:

> 2014-06-03 17:37:28,501:INFO:sqlalchemy.engine.base.Engine:log:BEGIN 
> (implicit)
> 2014-06-03 17:37:28,503:INFO:sqlalchemy.engine.base.Engine:log:INSERT INTO 
> "group" (created_at, updated_at, name, manager_id) VALUES (%(created_at)s, 
> %(updated_at)s, %(name)s, %(manager_id)s) RETURNING "group".id
> 2014-06-03 17:37:28,503:INFO:sqlalchemy.engine.base.Engine:log:{'name': 
> u'Other group name', 'created_at': datetime.datetime(2014, 6, 3, 17, 37, 
> 28, 503171, tzinfo=tzlocal()), 'updated_at': datetime.datetime(2014, 6, 3, 
> 17, 37, 28, 503184, tzinfo=tzlocal()), 'manager_id': '36972'}
> 2014-06-03 17:37:28,503:INFO:sqlalchemy.engine.base.Engine:log:COMMIT
> 2014-06-03 17:37:28,720:INFO:tornado.access:web:200 POST /groups 
> (xx.xx.xx.xx) 221.99ms 


I am probably looking at some sort of race condition and I know those can 
be hard to help with, but would like to hear if anyone knows of anything 
that can make sqlalchemy behave like that where a commit() for some reason 
doesn't actually do the commit without any apparent errors.

Best regards,
Jeppe

-- 
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to