Revision 2 as of 2004-10-06 14:00:04

Clear message

What sucks about the DbApi

It totally misuses the cursor concept.

A cursor is a set of database rows you iterate over. It can be clientside or server-side.

In the DbApi, you first create a cursor object, then execute a statement on it, then fetch the results.

The normal way of using cursors with the DB-API is to reuse the cursor objects and fire new statements with them, and fetch new results.

This is totally misguided in my opinion.

A much better API should look similar to:

cx = dbapimodule.connect()
cx.execute("insert into tablename(val) values (?)", ('foo',))

for row in cx.executeReader("select val from tablename"):
    print row

row = cx.executeRow("select max(val) from tablename")

etc.

executing statements logically belongs in the connection object, not in the cursor object.

(Alas, then you could only loop over a single set of results at a time. I think the current cursor concept makes sense. -skip)

Enough ranting for now, more will come some day. Maybe somebody can clean this up and add a few thoughts :)

Unable to edit the page? See the FrontPage for instructions.