在奇怪的情况下赋值前引用的局部变量
local variable referenced before assignment in strange condition
我有一些代码从开源数据库获取输入,然后 returns 基于某些表格的报告。我本可以发誓昨天这段代码工作正常,但是当我今天启动它时:
Traceback (most recent call last):
File "C:\Users\whicaso1\Downloads\eclipse-standard-luna-R-win32-x86_64\eclipse\plugins\org.python.pydev_3.6.0.201406232321\pysrc\pydevd.py", line 1845, in
debugger.run(setup['file'], None, None)
File "C:\Users\whicaso1\Downloads\eclipse-standard-luna-R-win32-x86_64\eclipse\plugins\org.python.pydev_3.6.0.201406232321\pysrc\pydevd.py", line 1373, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Users\whicaso1\workspace\Status based chilli list\CreateChiliLog.py", line 29, in
CreateChiliLog()
File "C:\Users\whicaso1\workspace\Status based chilli list\CreateChiliLog.py", line 15, in CreateChiliLog
for chili in chili_database.getChilis(status):
File "C:\Users\whicaso1\workspace\Status based chilli list\ChiliFunctions.py", line 99, in getChilis
connection_chili.rollback()
UnboundLocalError: local variable 'connection_chili' referenced before assignment
现在,我不是白痴,我检查过我是否在赋值之前确实引用了变量 "connection_chili",但看起来错误发生了 while 赋值。 (这里是失败的代码片段,错误出现在 connection_chili 变量被分配给 mysqldb 数据库对象的那一行。)
def getChilis(self, status):
try:
connection_chili = MySQLdb.connect(self.host_, self.user_, self.password_, self.database_)
cursor = connection_chili.cursor()
query = "SELECT id FROM issues WHERE status_id = %i" % status
cursor.execute(query)
connection_chili.commit()
chilis = cursor.fetchall()
cursor.close()
return chilis</p>
<pre><code> except Exception, e:
connection_chili.rollback()
print "ERROR: " + str(e)
我的代码有问题吗,或者我的 python 编译器发生了什么奇怪的事情?
刚刚在 cmd 中对照 python 检查了我的代码,运行 没问题。所以我猜它可能是日食的一些奇怪问题。不管怎样,这已经不是编程题了,所以我要关闭它了
我有一些代码从开源数据库获取输入,然后 returns 基于某些表格的报告。我本可以发誓昨天这段代码工作正常,但是当我今天启动它时:
Traceback (most recent call last):
File "C:\Users\whicaso1\Downloads\eclipse-standard-luna-R-win32-x86_64\eclipse\plugins\org.python.pydev_3.6.0.201406232321\pysrc\pydevd.py", line 1845, in
debugger.run(setup['file'], None, None)
File "C:\Users\whicaso1\Downloads\eclipse-standard-luna-R-win32-x86_64\eclipse\plugins\org.python.pydev_3.6.0.201406232321\pysrc\pydevd.py", line 1373, in run
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Users\whicaso1\workspace\Status based chilli list\CreateChiliLog.py", line 29, in
CreateChiliLog()
File "C:\Users\whicaso1\workspace\Status based chilli list\CreateChiliLog.py", line 15, in CreateChiliLog
for chili in chili_database.getChilis(status):
File "C:\Users\whicaso1\workspace\Status based chilli list\ChiliFunctions.py", line 99, in getChilis
connection_chili.rollback()
UnboundLocalError: local variable 'connection_chili' referenced before assignment
现在,我不是白痴,我检查过我是否在赋值之前确实引用了变量 "connection_chili",但看起来错误发生了 while 赋值。 (这里是失败的代码片段,错误出现在 connection_chili 变量被分配给 mysqldb 数据库对象的那一行。)
def getChilis(self, status):
try:
connection_chili = MySQLdb.connect(self.host_, self.user_, self.password_, self.database_)
cursor = connection_chili.cursor()
query = "SELECT id FROM issues WHERE status_id = %i" % status
cursor.execute(query)
connection_chili.commit()
chilis = cursor.fetchall()
cursor.close()
return chilis</p>
<pre><code> except Exception, e:
connection_chili.rollback()
print "ERROR: " + str(e)
我的代码有问题吗,或者我的 python 编译器发生了什么奇怪的事情?
刚刚在 cmd 中对照 python 检查了我的代码,运行 没问题。所以我猜它可能是日食的一些奇怪问题。不管怎样,这已经不是编程题了,所以我要关闭它了