July 2, 2009: Version 0.54.2- Changed 'db.cancel()' to 'db.rollback()' to be inline with sqlite3 bindings.
- Changed how 'attach' work in db creation. Now, all subclasses of an attached class get attached to the database.
- Based on user request, changed sqlite import to:
try:
import sqlite3
except:
from pysqlite import dbapi2 as sqlite3
June 22, 2009: Version 0.54- Moved pod.list, pod.set, and pod.dict to separate modules. Now you have to import them directly like this:
import pod
import pod.list
a_list = pod.list.List()
- Changed 'index' to 'dynamic_index' in pod.Db constructor.
- Cleaned up how 'attach' works with the database.
June 17, 2009: Version 0.50- Can add index ability to dynamic attributes. For example:
db = pod.Db(file = 'afile.sqlite', index = True) # Now all dynamic attributes will be indexed for fast query.
# You can also control this on a class by class basis which overrides the global setting:
class Person(pod.Object):
POD_DYNAMIC_INDEX = True
class Place(pod.Object):
POD_DYNAMIC_INDEX = False
- On dynamic attributes you must use the where namespace when constructing queries. For typed attributes, this is not necessary (since typed attributes are defined in the class to start with). For example:
class Person(pod.Object):
weight = typed.pod.Float(index = False)
for peep in Person.where.age > 32:
peep.name
for peep in Person.where.weight > 233.2:
peep.name
for peep in Person.weight > 233.2:
peep.name
- Added full dictionary interface to pod.Object base class. This is necessary because the __dict__ of an instance is in an unknown state (there might be data in the database). Now, any instance acts as a scalable dictionary.
- Greatly increased test suite.
June 9, 2009: Version 0.40We got some feedback from some people which lead to major changes. - You can now perform fast 'ad-hoc' query on any attribute. This was due to a simple change where we went from binary to string based pickle streams. After much discussion, this seems the best trade off for 'most' applications and will not increase db size.
- 'column' has been changed to 'typed' to make it cleaner to understand. Querying works the same for dynamic 'untyped' attributes as for 'typed' attributes -- it's just 'typed' attributes increase performance.
- Changed to persistent_id and persistent_load for pickling pod.Object instances.
June 3, 2009: Version 0.31- Made pretty big changes to insert algorithm to increase insert speed. please note, in Python 2.5 on windows you'll need to get the update sqlite3 dll and place it in your DLLs folder -- this fixes a bug in sqlite3 to allow concurrent SELECT and INSERT/UPDATE. You can grab the DLL from the downloads section on this page
- Changed how you connect to the database. Now, you can either have 1) a single global database connection which all pod.Object classes are connected to or 2) many databases and you have to explicitly attach modules and classes to the right database. See the db API docs for more.
- Got rid of _pod_exists in instance namespace (e.g in the __dict__). Now the only variable created by pod is id which is the row id of the object.
- Add pod.collection module which implements native persistent list, dict.
May 20, 2009: Version 0.21- Got a 0.21 release on at http://pypi.python.org/pypi/pod. The 0.2 release broke in Python 2.5 due to sqlite3 in 2.5 not handling 'INSERT INTO tablename DEFAULT VALUES' -- the 0.21 release fixes this for both 2.5 and 2.6.
May 19, 2009: Version 0.2Couple of new things: - Experimental: Got the new pod.column.Time columns with extra datetime goodies working.
- Experimental: Added RawQuery objects.
May 5, 2009: Initial ReleaseFinally, we got the first alpha release onto code.google.com.
|