I couldn’t tell you, it shouldn’t happen in the first place.  Would need code 
that illustrates the problem.


On Mar 27, 2014, at 9:27 PM, Ni Wesley <nisp...@gmail.com> wrote:

> MySQLdb has the same problem.
> So, no concurrent, I just use engine(with default connection pool) execute.
> Then, how to work around the problem, for my query operation, if catch this 
> exception, query again?
> 
> 
> 在 2014年3月27日星期四UTC+8下午11时42分19秒,Michael Bayer写道:
> 
> On Mar 27, 2014, at 9:14 AM, Ni Wesley <nis...@gmail.com> wrote:
> 
>> It's not happening everytime.
>> 
>> And I am not using mysql-python, instead, I use pymysql.
>> 
>> So, the root cause is connection in bad state?
>> How to fix or work around from sqlalchemy side?
> 
> I don’t really know, I’d need to have a short script which replicates it in 
> order to identify the pattern exactly.
> 
> if its pymysql, try another DBAPI.  though this may be some artifact of the 
> MySQL protocol.
> 
> as always, if you’re doing anything with threads, concurrent use of a MySQL 
> connection will usually lead to problems like this.  but there can be other 
> reasons too.
> 
> 
> 
> 
>> 
>> Wesley
>> 
>> 在 2014年3月27日星期四UTC+8下午8时58分40秒,Michael Bayer写道:
>> when the DBAPI cursor has no .description object, it is determined to not be 
>> a result-row returning object.   The MySQLDB DBAPI has been observed to 
>> occasionally have issues in this area, when a connection gets into a bad 
>> state. There are likely patterns in how you’re calling it that lead it to 
>> have this issue but you might try a different DBAPI like 
>> mysql-connector-python just to see what’s different.
>> 
>> 
>> 
>> 
>> On Mar 27, 2014, at 7:41 AM, Ni Wesley <nis...@gmail.com> wrote:
>> 
>>> Hi all,
>>>   Today I get an error as title.
>>> I use sqlalchemy + mysql.
>>> Here is my code snippet:
>>> def dbquery(_table,whereclause):
>>> 
>>>     try:
>>> 
>>>         #_table=Table(tablename, metadata, autoload=True)
>>> 
>>>         #_table = tables[tablename]
>>> 
>>>         i=_table.select().where(whereclause) 
>>> 
>>>         if direct_engine:  #direct_engine is True
>>> 
>>>             res = engine.execute(i)
>>> 
>>>             return res
>>> 
>>>         else:
>>> 
>>>             session = scoped_session(sessionmaker(bind=engine))
>>> 
>>>             res = session.execute(i)
>>> 
>>>             return res
>>> 
>>>             session.close()
>>> 
>>>     except Exception,e:
>>> 
>>>         #dba_logger.log(40,'Exception when dbwriter:%s' % str(e))
>>> 
>>>         #dba_logger.log(20,'Exception detail:%s' % str(kwargs))
>>> 
>>>         exctrace('db','1','Error happened when querying 
>>> db',dba_logger,'Exception when dbquery:%s' % str(e),'Exception detail:%s' % 
>>> str(whereclause))
>>> 
>>>         #session.rollback()
>>> 
>>>         if not direct_engine:
>>> 
>>>             session.close()
>>> 
>>> Here is snippet in another file involving dbquery:
>>> 
>>> try:
>>> 
>>>      res = 
>>> dbquery(tables['sessions_details'],whereclause=and_(tables['sessions_details'].c.app_key==self.app_key,tables['sessions_details'].c.device_token==self._devicetoken))
>>> 
>>> except Exception,e:
>>> 
>>>     exctrace('db','1','Error happened when querying 
>>> db',dba_logger,'Exception when query session_details:%s' % 
>>> str(e),'Exception detail:appkey is %s,devicetoken is %s' % 
>>> (self.app_key,self._devicetoken))
>>> 
>>>     self.read_message()
>>> 
>>>     return   
>>> 
>>> if res is None:
>>> 
>>>    logger.log(40,'When query connection,mysql has gone or something, just 
>>> skip db and go-on')
>>> 
>>>                         #here need to justify 0 or 1, later on
>>> 
>>>                         self.status='0'
>>> 
>>>                         self.read_message()
>>> 
>>>                         return
>>> 
>>> if res.first() is None:
>>> 
>>>    if json_obj['action'] == 'reg':
>>> 
>>> So, the line in pink above raises the exception.
>>> 
>>> Could anyone give some suggestion how this happened?
>>> 
>>> 
>>> 
>>> Thanks.
>>> 
>>> Wesley
>>> 
>>> 
>>> -- 
>>> 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.
>>> For more options, visit https://groups.google.com/d/optout.
>> 
>> 
>> -- 
>> 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.
>> For more options, visit https://groups.google.com/d/optout.
> 
> 
> -- 
> 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.
> For more options, visit https://groups.google.com/d/optout.

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to