On Tue, Sep 05, 2006 at 05:39:28PM -0400, Cristian Gafton wrote:
> 
> To make a longer story shorter, as I progressed through this task, the 
> changes I have been making to PyGreSQL became more and more extensive, 
> modifying the original's behavior in incompatible ways. I didn't solve the 
> challenge of preserving PyGreSQL's existing behavior, seeing how the 
> native PostgreSQL bind parameters syntax ($1, $2, etc) is very different 
> from what PyGreSQL simulated (python-style %s or %(var)s). (although it 
> would be possible to do with some regexp foo)


Or even better, with my RiggedDict class :-)

class RiggedDict(dict):
    """Dictionary that will always return an object generated by a counter"""
    def __init__(self):
        dict.__init__(self)
        self._counter = 0
        self._map = {}

    def __getitem__(self, k):
        if k in self._map:
            return self._map[k]

        # Generate a value for this key, store it and return it
        self._counter += 1
        val = self._map[k] = '$%d' % self._counter
        return val

    def get_map(self):
        # utility function to check the maps that were generated so far
        return self._map

s = "select %(foo1)s, %(foo2)s, %(foo1)s from dual"

d = RiggedDict()
print s % d


Misa
_______________________________________________
DB-SIG maillist  -  DB-SIG@python.org
http://mail.python.org/mailman/listinfo/db-sig

Reply via email to