K
Konstantinos Pachopoulos
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?
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?