From: Krister Hedfors on
sqldict - dict with sqlalchemy database-agnostic back-end

You can now create a dict out of arbitrary key/value columns of
any existing database table, in addition to ordinary dedicated
strict or auto-pickling sqldicts.

Basic use:
$ easy_install sqldict
$ easy_install sqlalchemy

>>> from sqldict import sqldict
>>> from sqlalchemy import *
>>> #d0 = sqldict("mysql://user:pass(a)dbhost/dbname", "table0", create=1)
>>> engine = create_engine("sqlite://")
>>> d1 = sqldict(engine, "table1", create=1)
>>> d2 = sqldict(engine, "table2", create=1, valtype=Integer)
>>> contents = {"asd":123}
>>> d1.update(contents)
>>> d2.update(contents)
>>> assert d1["asd"] == "123"
>>> assert d2["asd"] == 123

Make dict from existing database table:

>>> _ = engine.execute("create table asd (i integer, s varchar(50))")
>>> _ = engine.execute("insert into asd values (42, 'gubbe')")
>>> d3 = sqldict(engine, "asd", keycol="s", valcol="i")
>>> d4 = sqldict(engine, "asd", keycol="i", valcol="s")
>>> assert d3["gubbe"] == 42
>>> assert d4[42] == "gubbe"

Key-val serializing and only val serializing sqldicts;
a's key column type is String, b's key column type is Integer.
The obvious use case for b is HUGE dicts where only integer
indexes are allowed:

>>> a = sqldict(engine, "serty1", create=1, serialize=1)
>>> b = sqldict(engine, "serty2", create=1, serialize=1, keytype=Integer)
>>>
>>> a[1] = (2,3)
>>> assert a[1] == (2,3)
>>> b[4] = (5,6)
>>> assert b[4] == (5,6)

Have fun!
/Krister Hedfors