[storm] Storm, sqlite, and lists

Jamu Kakar jamshed.kakar at canonical.com
Fri Jul 27 18:10:12 BST 2007


Hi Shawn,

Note: Please include storm at lists.canonical.com in your responses.

shawn bright wrote:
> if i have a new object, and i need to know its id, because it is related
> to another object, how do i get that id ? I would need to commit(), then
> re-select it ?

Nope, you don't need to commit for this case.  For the most part, you
can just access the attribute and Storm will auto-flush the changes to
the database (without actually committing the changes).  For example,
the following should work:

class Person(Storm):

    __storm_table__ = "person"

    id = Int(primary_key=True)
    name = Unicode(allow_none=False)

    def __init__(self, name):
        self.name = name

class Account(Storm):

    __storm_table__ = "account"

    id = Int(primary_key=True)
    owner_id = Int()

    owner = Reference(owner_id, Person.id)

# We'll create an Account object and add it to a store.
account = store.add(Account())

# Storm's auto-flushing capability with get an ID, if need be.
print account.id

# The new person object will be automatically added to the store, by
# way of association with the Account.
account.owner = Person("Bob")

# Again, Storm's auto-flushing will get an ID, if necessary.
print account.owner.id

Does this answer your question?

Thanks,
J.



More information about the storm mailing list