koranth...@gmail.com wrote:

Module database:
^^^^^^^^^^^^^^^^^^^
Session = None

'Initializing' names is not necessary. Delete this. Without it, your error would be more obvious.

def init(dbname):
   engine = create_engine('sqlite:///%s' %dbname)
   ...
   global Session
   Session = sessionmaker(bind=engine)

This **rebinds* the module name 'Session' to a new object, making the initial bindin irrelevant and misleading.

[snip]

I guessed as much. But, I was under the impression that if the
original value is modified, the variables value also will change.

Python has names and slots bound to objects. Some objects are mutable and some not. None is not mutable. You replaced it.

If you had done something like

Session = sessionmaker()

def init(dbname):
    Session.engine = create_engine('sqlite:///%s' %dbname)
    ...

then you would have *modified* the original object (value) bound to 'Session' and would have seen the behavior you expected.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to