traceback and mySQL
JXStern
JXSternChangeX2R at gte.net
Tue Oct 8 22:32:32 EDT 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