Hi, i have a problem, the source of which is probably the fact, that i have not understood how to declare global variables - I use the Jython compiler, but i think this is a Python issue...
First of all, i don not use any classes in this module. The problem is, that i declare and instantiate some vars outside the functions (global ones), but when i use them inside the functions, i get an "UnboundLocalError" error. Here's the interesting part of the code: ========================================================================================== #imports ... #CONSTANTS ..... ... #connection to DB dbcursor_=db.cursor() #GLOBAL VARS entryList_={} cmterID_=0 //VARIABLE DECLARATION projID_=0 fileIDNumber_=0 Commiter_={} Commit_={} Project_={} ProjectVersion_={} def updateCommiterTable(Commiter): query="INSERT INTO Commiter (pk_cmterID,cmterName) VALUES ("+str(Commiter[0])+",\""+str(Commiter[1])+"\");" dbcursor_.execute(query) def updateCommitTable(Commit): query="INSERT INTO Commit (pk_cmitID,cmitTime,fk_cmterID,cmitProperties,cmitComment,cmitCommentLines,fk_projID) VALUES (" \ +str(Commit[0])+",\""+str(Commit[1])+"\","+str(Commit[2])+",\""+str(Commit[3])+"\",\""+str(Commit[4])+"\","+str(Commit[5])+","+str(Commit[6])+");" dbcursor_.execute(query) def updateProjectTable(Project): dbcursor_.execute("INSERT INTO Project (pk_projID,projName,projWebsite,projContactPoint,projSrcPath,projMailPath) VALUES (" \ +str(Project[0])+",\""+str(Project[1])+"\",\""+str(Project[2])+"\",\""+str(Project[3])+"\",\""+str(Project[4])+"\",\""+str(Project[5])+"\");") def updateProjectVersionTable(ProjectVersion): dbcursor_.execute("INSERT INTO ProjectVersion (pfk_projID,projName,projVersion) VALUES (" \ +str(ProjectVersion[0])+",\""+str(ProjectVersion[1])+"\",\""+str(ProjectVersion[2])+"\");"); def getLogsLoop(): while svnLogging_.getCurrentRevisionNumber()!=svnLogging_.getLatestRevisionNumber(): try: entryList_=svnLogging_.getNextLogs(PIVOT); except HeadRevisionReachedException: print "Attempting to go over the HEAD revision..." for entry in entryList_: print "processing new SVN entry..." processLogEntry(entry) entryList_.clear() def processLogEntry(entry): revision = int(entry.getRevision()) commiter = str(entry.getAuthor()) datetime = getTimeStamp(entry.getDate()) message = str(entry.getMessage()) Commiter_[0] = cmterID_ //HERE's THE PROBLEM Commiter_[1] = commiter updateCommiterTable(Commiter_) Commit_[0] = revision Commit_[1] = datetime Commit_[2] = cmterID_ Commit_[3] = "" #properties Commit_[4] = message Commit_[5] = getNumberOfLines(message) Commit_[6] = projID_ updateCommitTable(Commit_) ProjectVersion_[0]=projID_ ProjectVersion_[1]="" ProjectVersion_[2]="" updateProjectVersionTable(ProjectVersion_) Project_[0]=projID_ Project_[1]="" Project_[2]="" Project_[3]="" Project_[4]="" Project_[5]="" updateProjectTable(Project_) cmterID_+=1 projID_+1 ##############################HELPER##METHODS############################### ... ##############################HELPER##METHODS############################### getLogsLoop() ========================================================================================== And I get: ========================================================================================== Traceback (innermost last): File "ParseSVN2DB.py", line 182, in ? File "ParseSVN2DB.py", line 87, in getLogsLoop File "ParseSVN2DB.py", line 100, in processLogEntry UnboundLocalError: local: 'cmterID_' ========================================================================================== The things is, that cmterID_ HAS BEEN instantiated... I don't understand. Can somebody please explain? -- http://mail.python.org/mailman/listinfo/python-list