sqldict - You have a dict with unlimited capacity, what do you do?(it can store arbitrary objects to

K

Krister Hedfors

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@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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top