Thanks for the quick response. However, the problem I face is not
being able to access the id assigned by database but not being able to
modify the corresponding field in Page instance. To be more clear:
bk_ids = {}
for title in ('Tom Sawyer', 'Huck Finn'):
book = Book(title=title)
session.add(book)
session.flush()
bk_ids[title] = book.id
session.commit()
for i, content in enumerate(('Once upon a time there was a little
fellow called Tom.', 'His surname was Sawyer.')):
page = Page(i, content, bk_ids['Tom Sawyer'])
session.add(page)
session.commit()
When I check the database, book_id field in pages table is not
modified as it supposed (or at least I suppose) to be.
On Nov 9, 3:12 pm, Mike Conley <[email protected]> wrote:
> The id is generate by the database engine, not SQLAlchemy, so session.add()
> does nothing to push your object to the database and generate the id. You
> need to execute session.flush() after session.add() to write the book to the
> database and generate the id. After the flush() operation, the book id is
> available to save in your dictionary.
>
> something like this:
>
> bk_ids = {}
> for title in ('Tom Sawyer', 'Huck Finn'):
> book = Book(title=title)
> session.add(book)
> session.flush()
> bk_ids[title] = book.id
> session.commit()
>
> Without the flush(), the id will be NULL.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---