[DB-SIG] db module wrapper
Randall Smith
randall at tnr.cc
Wed Aug 18 22:22:43 CEST 2004
I have created a db module wrapper for hiding the differences between
the DB API 2 implementations. I currently testing it on psycopg and
cx_Oracle. Some of the things I have done are:
* Standardize time objects to use Python datetime.datetime and
datetime.date classes for both input and output. The module converts
between types transparently. This is working on both psycopg and cx_Oracle.
* Standardize the params input to use the ? operator and a list. The
module translates input params and query into the one appropriate for
the native module. For example with cx_Oracle: "Select foo from table
where goo > ?" with params [myparam] converts to "Select foo from table
where goo > :var1" with params {'var1':myparam}. This is working with
both psycopg and cx_Oracle.
* In addition, I also used Kevin Jacob's db_row module to give access by
name to the rows returned from a query.
Features can be turned off.
First of all, am I reinventing the wheel here? Does a wrapper already
exist that hides API implementation differences? Second, do you have
any suggestions for standardizing? I used the ? operator for params.
Is there a better option? How do you feel about using the datetime
module? I know it is not available in earlier versions of Python, but I
want to stay in the Python standard library if possible. I would love
feedback.
Randall
More information about the DB-SIG
mailing list