global name is not defined

barronmo barronmo at
Tue Nov 6 22:57:12 CET 2007

I'm getting an error msg I don't understand, "global name EMR_globals
is not defined", and could use some help.

I've separated the application I'm building into several modules.  One
of the modules holds variables I need to pass from one module to
another and is called 'EMR_globals'.  Several other modules hold
functions or user menus and then 'EMR_main' controls the initial user
interaction.  I'm using MySQL to hold the data.

The initial connection to the database is done by 'EMR_main'.
Functions then define and close a cursor for various queries.  The
connection variable, 'conn', is defined 'conn = "" ' in EMR_globals
and then used in EMR_main.  Unfortunately when a module.function
attempts to use it I get the error msg.

Here is the source of the error, module 'name_lookup':

def name_find(namefrag):

     cursor = EMR_globals.conn.cursor(MySQLdb.cursors.DictCursor)
     cursor.execute("SELECT patient_ID, firstname, lastname FROM
demographics WHERE lastname LIKE '%s%%'" % (namefrag))

     results = cursor.fetchall()

     for index, row in enumerate(results):
          print "%d %s   %s %s" % (index, row["patient_ID"],
row["firstname"], row["lastname"])

     indx = int(raw_input("Select the record you want: "))
     results_list = list(results)
     a = str(results_list[indx]['patient_ID'])
     print 'You have chosen patient ID # ' + a

     cursor.execute("SELECT * FROM demographics WHERE patient_ID = %s"
% (a,))
     selected_pt = cursor.fetchall()
# if this query returns more than one record the following code will
fail I think
     print menus.menu_demographics(selected_pt['firstname'],
     print menus.menu_pt_record


Thanks for any help.   Mike

More information about the Python-list mailing list