Susan:
That's not a very good error message, it is true.
I suspect that your vendor's ODBC driver may be a bit light on diagnostics.
To extract the most information from the exception, try something like this:
v v v v v start Python code v v v v v
from win32com.client import Dispatch
import pywintypes
conn = Dispatch(r'ADODB.Connection')
def printADOerrors(adoConn):
j=adoConn.Errors.Count
if j:
print 'ADO Errors:(%i)' % j
for e in adoConn.Errors:
print 'Description: %s' % e.Description
print 'Number: %s ' % e.Number
try:
print 'Number constant:' % adoErrors[e.Number]
except:
pass
print 'Source: %s' %e.Source
print 'NativeError: %s' %e.NativeError
print 'SQL State: %s' %e.SQLState
print '...Testing Sql login...'
conn.Open('DSN=test')
recset, affected = conn.Execute('select blah from foo') # this should work
print 'affected=',affected
try:
recset, affected = conn.Execute('select blah from xxxx') # this should
fail
except pywintypes.com_error:
printADOerrors(conn)
conn.Close()
^ ^ ^ ^ ^ ^ ^ ^ end code ^ ^ ^ ^ ^
I tested this script on my system (The DSN "test" points to my MySQL server)
and got the following:
v v v v v v console output v v v v v
...Testing Sql login...
affected= 1
ADO Errors:(1)
Description: [MySQL][ODBC 5.1 Driver][mysqld-5.0.75-0ubuntu10.2]Table
'test.xxxx' doesn't exist
Number: -2147217865
Source: Microsoft OLE DB Provider for ODBC Drivers
NativeError: 1146
SQL State: S0002
^ ^ ^ ^ ^ ^ ^
which is much easier to understand.
With some luck you too may get something readable.
By the way, you can get the exact same results by:
v v v v v v v v
import adodbapi
print '...Testing Sql login...'
conn = adodbapi.connect('DSN=test')
crsr = conn.cursor()
crsr.execute('select blah from foo') # this should work
print 'affected=',crsr.rowcount
try:
crsr.execute('select blah from xxxx') # this should fail
except conn.DatabaseError:
conn.printADOerrors()
conn.close()
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^e
Which is, IMHO, somewhat easier.
--
Vernon
_______________________________________________
DB-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/db-sig