[sqlalchemy] Re: Randomly getting InterfaceError exceptions

2007-05-08 Thread Michael Bayer


On May 8, 2007, at 2:41 PM, Gambit wrote:

 Sorry about the wrong subject in the last post. Google groups are  
 quite
 annoying.

 This is the minimal program that causes the error:

 db = sa.create_engine('mysql://myuser:[EMAIL PROTECTED]/ 
 mydatabase')
 metadata = sa.BoundMetaData(db)

 def user_mapper():
 '''Create the object/relational link for users'''
 users_table = sa.Table('Users', metadata, autoload=True)
 sa.orm.clear_mappers()
 sa.mapper(User, users_table)

 session = sa.create_session(bind_to=db)
 query = session.query(User)

 return session, query

I see you are creating a Mapper in the same scope as a Session and a  
query.  this is not the proper pattern as mappers are intended to be  
create-once-per-class objects (usually at the module level), whereas  
sessions are usually instantiated once-per-request, queries once-per- 
operation...so those three things do not belong together.  in  
particular clear_mappers() is probably not threadsafe.

 The error I get is:

 Database error: (InterfaceError) (0, '') u'SELECT `Users`.`Uid` AS  
 `Users_Uid`, `Users`.`Country` AS `Users_Country`, `Users`.`LName`  
 AS `Users_LName`, `Users`.`Credits` AS `Users_Credits`,  
 `Users`.`Pwd` AS `Users_Pwd`, `Users`.`PhoneNumber` AS  
 `Users_PhoneNumber`, `Users`.`FName` AS `Users_FName`,  
 `Users`.`MoneyBalance` AS `Users_MoneyBalance`, `Users`.`Email` AS  
 `Users_Email` \nFROM `Users` \nWHERE `Users`.`Uid` = %s ORDER BY  
 `Users`.`Uid` \n LIMIT 1' ['testuser']


 Notice this sometimes works and sometime it doesn't.


sometimes works and sometimes doesnt screams loudly of thread  
synchronization errors (as does InterfaceError from mysql).  ensure  
that you arent sharing connections or sessions between concurrently  
executing threads.

 This is under mod_python with SQLAlchemy 0.3.7 in case it matters.

another possibility is that the error is occuring corrresponding to  
it being the first thing running within an apache child process.   
again, properly organizing whats module-level vs. whats request level  
should work this out.





--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~--~~~~--~~--~--~---



[sqlalchemy] Re: Randomly getting InterfaceError exceptions

2007-05-08 Thread Gambit

Thanks for the reply. You are probably right about those things don't 
belonging together, it certainly makes a lot of sense now you mention 
it. I'll reorganize my code better and see if the errors go away.

Thanks!


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~--~~~~--~~--~--~---