[Tutor] associating two objects without ORM and processing a text file

Alan Gauld alan.gauld at btinternet.com
Fri Feb 15 09:58:40 CET 2013

On 15/02/13 03:09, neubyr wrote:

> I do have a doubt regarding this - e.g. how would I implement this if my
> program/application is web based. For example, loading the text file
> during web server start and stop.

For a long running process like a web server this is probably the wrong 
approach. You probably want to save the data more regularly - maybe even 
at the end of every user transaction. But with a web server we have the 
additional problem of usually wanting to handle multiple requests in 
parallel so storing data in memory gets more complicated - which takes 
us back to using a data base which pretty much handles all of that for you.

If you will only have a single request running at a time then you can 
use the same try/finally approach in your transaction processing code. 
But because they run  so often I'd add the 'dirty flag' idea that 
somebody else mentioned too so that you don;t sabve if no changes have 
been made.

A dirty flag is simply a global (or class) level variable (isDirty) that 
gets set by your code anytime you change the data. If a book changes its 
state it sets the flag to True. The save code then does something like

with open(filename) as store
    if Book.isDirty:
       for book in Book.instances:

That will ensure that any changes are saved but we don't waste time
if no changes exist.

Alan G
Author of the Learn to Program web site

More information about the Tutor mailing list