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.
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?
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.