Give the restriction you mention (that you have only the cursor object) the
solution you propose looks pretty good.

The  cursor.connection attribute is an extension, but I think most api
modules provide it.


On Fri, Apr 19, 2013 at 11:56 AM, Dan Lenski <dlen...@gmail.com> wrote:

> Hi,
> I have to dump some data from various databases (Oracle and Postgre, at the
> moment) into CSV files, while preserving the column type information so the
> data can be correctly loaded into another application.  Basically, I need
> to
> write a function that can distinguish string/numeric data in the columnar
> data
> from a cursor object in a fashion that's independent of the particular
> DBAPI
> module in use.
>
> According to PEP-0249, each DBAPI module has to define type objects (e.g.
> module.STRING) which "must compare equal to" the type objects in the cursor
> object for each column.
>
> The problem I'm having is... how can I figure out what are the appropriate
> type objects for this comparison if I *only* have access to the cursor
> object?
> I've been using an ugly kludge so far, to get a handle on the right DBAPI
> module:
>
>     mod = sys.modules[cur.connection.__class__.__module__] #FIXME!
>     if cur.description[0][1] == mod.STRING:
>         print "first column is STRING data type"
>
> Is there a more robust and elegant solution to this?  It seems like there
> ought to be a module-independent way to introspect the column data types in
> the cursor object.
>
> Thanks,
> Dan Lenski
>
> _______________________________________________
> DB-SIG maillist  -  DB-SIG@python.org
> http://mail.python.org/mailman/listinfo/db-sig
>
_______________________________________________
DB-SIG maillist  -  DB-SIG@python.org
http://mail.python.org/mailman/listinfo/db-sig

Reply via email to