UnboundLocalError: local variable 'conn' referenced before assignment

Question:

I have an error (shown in title) which occurs when I run this script:

import psycopg2

conn                =  None
conn_string         = "host='localhost' dbname='localdb' user='someuser' password='abracadabra'"


def connectDb():
    if conn is not None:   # Error occurs on this line
        return

    # print the connection string we will use to connect
    print "Connecting to databasen ->%s" % (conn_string)

conn has global scope, and is assigned to None before being referenced in the function – why the error message?

Answers:

In python you have to declare your global variables which you want to alter in functions with the global keyword:

def connectDb():
    global conn
    if conn is not None:   # Error occurs on this line
        return
    ...

My guess is that you are going to assign some value to conn somewhere later in the function, so you have to use the global keyword.

Answered By: Constantinius
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.