Trying ZODB, background in Relational: mimic auto_increment?

Jean-Paul Calderone exarkun at divmod.com
Thu Aug 14 08:30:25 EDT 2008


On Thu, 14 Aug 2008 05:22:35 -0700 (PDT), Phillip B Oldham <phillip.oldham at gmail.com> 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()

Jean-Paul



More information about the Python-list mailing list