traceback and mySQL

JXStern JXSternChangeX2R at gte.net
Wed Oct 9 04:32:32 CEST 2002


Why does 

    traceback.print_exc()

capture the excellent mySQL error message:

    ProgrammingError: (1064, "You have an error in your SQL syntax
near 'eat my shorts' at line 1")
	
but
    traceback.extract_tb(sys.exc_info()[2])
   
does not list it?

I want to capture all into a list for processing.

I've tried some other variations without success.

Thanks!

Still a Python newbie,
  (or I guess I would dive into the source)
Joshua Stern



--------- source -----------

import os, sys
import traceback
import MySQLdb

db = MySQLdb.connect(host="localhost", user="root", db="HMon")
cx = db.cursor()

print "connected to database, got cursor, try exception"

try:
    cx.execute("eat my shorts")
except:
    print "***in exception handler"
    print sys.exc_info()
    s = raw_input("->")

    tb = traceback.extract_tb(sys.exc_info()[2])
   
    traceback.print_exc()

    s = raw_input("->")
    print tb

cx.close()
cx = None
db.close()
db = None

--------- output follows -----------

connected to database, got cursor, try exception
***in exception handler
(<class _mysql_exceptions.ProgrammingError at 0x00AF7DB0>,
<_mysql_exceptions.ProgrammingError instance at 0x0163C068>,
<traceback object at 0x0163DDB8>)
->
Traceback (most recent call last):
  File "C:/Hax/HMon/dbclasses/foo3.py", line 40, in ?
    cx.execute("eat my shorts")
  File "C:\PROGRA~1\Python22\Lib\site-packages\MySQLdb\cursors.py",
line 95, in execute
    return self._execute(query, args)
  File "C:\PROGRA~1\Python22\Lib\site-packages\MySQLdb\cursors.py",
line 114, in _execute
    self.errorhandler(self, exc, value)
  File
"C:\PROGRA~1\Python22\Lib\site-packages\MySQLdb\connections.py", line
33, in defaulterrorhandler
    raise errorclass, errorvalue
ProgrammingError: (1064, "You have an error in your SQL syntax near
'eat my shorts' at line 1")
->
[('C:/Hax/HMon/dbclasses/foo3.py', 40, '?', 'cx.execute("eat my
shorts")'),
('C:\\PROGRA~1\\Python22\\Lib\\site-packages\\MySQLdb\\cursors.py',
95, 'execute', 'return self._execute(query, args)'),
('C:\\PROGRA~1\\Python22\\Lib\\site-packages\\MySQLdb\\cursors.py',
114, '_execute', 'self.errorhandler(self, exc, value)'),
('C:\\PROGRA~1\\Python22\\Lib\\site-packages\\MySQLdb\\connections.py',
33, 'defaulterrorhandler', 'raise errorclass, errorvalue')]




More information about the Python-list mailing list