Jean-Paul Calderone wrote: > On Thu, 14 Aug 2008 05:22:35 -0700 (PDT), Phillip B Oldham > <[EMAIL PROTECTED]> wrote: >>Hi all. I'm playing with standalone ZODB at the moment trying to get a >>better understanding of its use in applications. I come from a >>PHP/MySQL background, and I'm taking my first steps with Python at the >>same time. >> >>One of the things I'm not understanding about ZODB is assigning >>incremental IDs to objects. For instance, if I were to be writing a >>support-ticket system I'd want to give each ticket a unique number, >>but one that's "human-useable" (otherwise you could just use a UUID - >>try giving one of those over the phone!). >> >>Also, how would one add a new item to the db in this way? >> >>For instance: >> >>class Ticket(Persistence): >> def __init__(self): >> self.id = '' # How do I add a new incremental ID here? >> >># and later on in the app >> >>tkt = Ticket() >>dbroot[?????] = tkt >> >>How would one assign a unique ID to the root at that point? > > Here's one way > > class Sequence(Persistence): > def __init__(self): > self.current = 0 > > def next(self): > self.current += 1 > return self.current > > ticketSequence = Sequence() > > class Ticket(Persistence): > def __init__(self): > self.id = ticketSequence.next()
Be aware that this isn't working concurrently. Depending on your application, this can be mitigated using a simple threading.Lock. Diez -- http://mail.python.org/mailman/listinfo/python-list