[DB-SIG] checking column types from cursor object in a database-independent way?
dlenski at gmail.com
Fri Apr 19 19:56:43 CEST 2013
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
mod = sys.modules[cur.connection.__class__.__module__] #FIXME!
if cur.description == 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.
More information about the DB-SIG