[python-sybase] How to deal with DatabaseError
Andrew McNamara
andrewm at object-craft.com.au
Thu Jul 20 09:18:54 EST 2006
>What, in every script or module that does database interaction? No thanks.
>And what about the mythical script that migrates data from Sybase to
>Postgres using both drivers?
Well, if you have a large system composed of many modules, it doesn't seem
like much of an additional impost to put the "import...as" stuff in a
module (I've found that I invariably end up with a module that wraps the
dbapi to some degree other anyway).
If you're mixing adapters, sure, it's somewhat more painful. I guess you
could use something like:
try:
... logic ..
except (sybase.DatabaseError, PgSQL.DatabaseError), e:
... error logic...
If you have a common module, you can put that tuple in it, eg:
DatabaseError = sybase.DatabaseError, PgSQL.DatabaseError
and then just catch with the tuple:
try:
... logic ..
except DatabaseError, e:
... error logic...
> All exception classes defined by the DB API standard should be
> exposed on the Connection objects as attributes (in addition
> to being available at module scope).
[...]
>Obviously this is no good unless all drivers that you want to use support
>it. I'll go see if I can whip up a patch for python-sybase. In the worst
>case, I could monkey-patch those attributes in to every Connection in my
>abstraction layer. (Blech.)
I must admit, I've never noticed that in the DBAPI spec, and a quick
survey suggests support for it is the exception rather than the rule.
It also doesn't help your second case above.
--
Andrew McNamara, Senior Developer, Object Craft
http://www.object-craft.com.au/
More information about the Python-sybase
mailing list