Python : O/Rマッパーなんて必要ないんじゃない?

sqlite3とかの場合、

class obj(dict):
    __getattr__ = dict.__getitem__
    __setattr__ = dict.__setitem__
    __delattr__ = dict.__delitem__

def dict_factory(cursor, row):
    d = {}
    for idx, col in enumerate(cursor.description):
        k = col[0]
        s = row[idx]
        d[idx] = s
        d[k.upper()] = s
        d[k.lower()] = s
    return obj(d)

という感じの関数を用意しておいて、

import sqlite3

con = sqlite3.connect(dbfile)
con.row_factory = dict_factory
a = con.execute("select * from TABLE_A").fetchone()

というふうに書けば、selectの結果にオブジェクトのようにアクセスできる。
これ以上の何が必要なのだろう?