Home | Trees | Indices | Help |
|
---|
|
littletable
- a Python module to give ORM-like access to
a collection of objects
The littletable
module provides a low-overhead,
schema-less, in-memory database access to a collection of user objects.
littletable
provides a DataObject
class for ad hoc creation of semi-immutable objects that can be stored in
a littletable
Table.
In addition to basic insert/remove/query/delete access to the contents
of a Table, littletable
offers:
littletable
Table
littletable
Tables do not require an upfront schema
definition, but simply work off of the attributes in the stored values,
and those referenced in any query parameters.
Here is a simple littletable
data storage/retrieval
example:
from littletable import Table, DataObject customers = Table('customers') customers.create_index("id", unique=True) customers.insert(DataObject(id="0010", name="George Jetson")) customers.insert(DataObject(id="0020", name="Wile E. Coyote")) customers.insert(DataObject(id="0030", name="Jonny Quest")) catalog = Table('catalog') catalog.create_index("sku", unique=True) catalog.insert(DataObject(sku="ANVIL-001", descr="1000lb anvil", unitofmeas="EA",unitprice=100)) catalog.insert(DataObject(sku="BRDSD-001", descr="Bird seed", unitofmeas="LB",unitprice=3)) catalog.insert(DataObject(sku="MAGNT-001", descr="Magnet", unitofmeas="EA",unitprice=8)) catalog.insert(DataObject(sku="MAGLS-001", descr="Magnifying glass", unitofmeas="EA",unitprice=12)) print(catalog.by.sku["ANVIL-001"].descr) wishitems = Table('wishitems') wishitems.create_index("custid") wishitems.create_index("sku") wishitems.insert(DataObject(custid="0020", sku="ANVIL-001")) wishitems.insert(DataObject(custid="0020", sku="BRDSD-001")) wishitems.insert(DataObject(custid="0020", sku="MAGNT-001")) wishitems.insert(DataObject(custid="0030", sku="MAGNT-001")) wishitems.insert(DataObject(custid="0030", sku="MAGLS-001")) # print a particular customer name # (unique indexes will return a single item; non-unique # indexes will return a list of all matching items) print(customers.by.id["0030"].name) # print all items sold by the pound for item in catalog.where(unitofmeas="LB"): print(item.sku, item.descr) # print all items that cost more than 10 for item in catalog.where(lambda o : o.unitprice>10): print(item.sku, item.descr, item.unitprice) # join tables to create queryable wishlists collection wishlists = customers.join_on("id") + wishitems.join_on("custid") + catalog.join_on("sku") # print all wishlist items with price > 10 bigticketitems = wishlists().where(lambda ob : ob.unitprice > 10) for item in bigticketitems: print(item) # list all wishlist items in descending order by price for item in wishlists().sort("unitprice desc"): print(item)
Version: 0.10
Author: Paul McGuire <ptmcg@users.sourceforge.net>
Classes | |
DataObject A generic semi-mutable object for storing data values in a table. |
|
Table Table is the main class in littletable , for
representing a collection of DataObjects or user-defined objects
with publicly accessible attributes or properties.
|
|
PivotTable Enhanced Table containing pivot results from calling table.pivot(). |
|
JoinTerm Temporary object created while composing a join across tables using Table.join_on and '+' addition. |
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Thu Jul 14 12:55:50 2016 | http://epydoc.sourceforge.net |