您好我有以下函数从我的模板中获取sql。变量行正在获取用户输入的查询。如果用户输入了无效的sql,则会收到UnboundLocalError: local variable 'row' referenced before assignment
的错误(因为行无效,sql是错误的)如何有效地处理此错误? django python有点新鲜。可以帮助我这个家伙吗?提前致谢。
def DBQuery(sql):
c = MySQLdb.connect(host=HOST,user=USER,passwd=PASS,db=DB, cursorclass=MySQLdb.cursors.DictCursor)
cursor = c.cursor()
try:
cursor.execute(sql)
row = cursor.fetchall()
except Exception, e:
print "Error found!", e
cursor.close()
c.close()
return row
答案 0 :(得分:0)
在返回之前声明变量,类似于:
def DBQuery(sql):
c = MySQLdb.connect(host=HOST,user=USER,passwd=PASS,db=DB, cursorclass=MySQLdb.cursors.DictCursor)
cursor = c.cursor()
row = None
try:
cursor.execute(sql)
row = cursor.fetchall()
except Exception, e:
print "Error found!", e
cursor.close()
c.close()
return row
答案 1 :(得分:0)
def DBQuery(sql):
c = MySQLdb.connect(host=HOST,user=USER,passwd=PASS,db=DB, cursorclass=MySQLdb.cursors.DictCursor)
cursor = c.cursor()
try:
cursor.execute(sql)
row = cursor.fetchall()
except Exception, e:
print "Error found!", e
row="None"
cursor.close()
c.close()
return row
#then if the Exception ocure, the func will ret the string "None"
答案 2 :(得分:0)
我会稍微更改代码,看看cursor.execute()在执行cursor.fetchall()之前是否返回了任何内容。
rows_affected = cursor.execute(sql)
if rows_affected == 0:
flag_an_error()
else:
rows = ......
您可以根据应用程序处理错误。