May 09, 2002
Seamless Persistent Storage
There is a new release of PythonCard coming out this week, lots of interesting new goodies ...
Meanwhile I'm struggling with a way to come up with transparent persistent storage in an easy to use desktop development environment. The existing flatfileDatabase sample is my starting point. In it Kevin takes a Model-View-Controller approach to storing fairly standard address records in a text file. The storage approach is fairly forceful, it simply saves the current record when you navigate out of it, but it should prove an interesting test bed for integrating other storage mechanisms. Top of my heap are shelve and MySQL.
What I need to do is implement a generic storage mechanism. Inspired by the contents of weblib and bdoz how is this for a first stab at a super class definition;
class Storage:
def open(self):
"Initialise this storage object"
pass
def store(self, table, **row):
"Store an item"
pass
def fetch(self, table, id):
"Fetch an item by its key"
pass
def find(self, table, where):
"Find an item by a non-key value"
pass
def delete(self, table, id):
"Remove an item permanently"
pass
def _insert(self, table, **row):
raise NotImplementedError
def _update(self, table, **row):
raise NotImplementedError
The stored items would be passed arounds as dictionaries I think. This makes interfacing with ZODB and shelve quite easy and is quite analagous for us RDBMS types. I think I will let this kick around in my subconscious for a bit before I actually get off my bum and try and implement it.
Posted by Andy Todd at May 09, 2002 05:44 PM