1

我试图通过其他脚本进行数据库连接。 但脚本没有正常工作。UnboundLocalError:分配之前引用的局部变量“行”

,如果我这样做对行的“打印”然后我得到的值“空”

但是,如果使用了“选择事件*”查询,然后我从表事件的结果。

导入数据库

rows = database.database("INSERT INTO incidents VALUES(3 ,'test_title1', 'test',  TO_DATE('25-07-2012', 'DD-MM-YYYY'), CURRENT_TIMESTAMP, 'sector', 50, 60)") 
#print database.database() 
print rows 

database.py脚本:

import psycopg2 
import sys 
import logfile 

def database(query): 
logfile.log(20, 'database.py', 'Executing...') 
con = None 

try:   
    con = psycopg2.connect(database='incidents', user='ipfit5', password='test') 

    cur = con.cursor() 
    #print query 

    cur.execute(query) 
    rows = cur.fetchall() 

    con.commit() 


#test row does work 
    #cur.execute("INSERT INTO incidents VALUES(3 ,'test_titel1', 'test', TO_DATE('25-07-2012', 'DD-MM-YYYY'), CURRENT_TIMESTAMP, 'sector', 50, 60)") 

except: 
    logfile.log(40, 'database.py', 'Er is iets mis gegaan') 
    logfile.log(40, 'database.py', str(sys.exc_info())) 

finally: 

    if con: 
     con.close() 
return rows 
+2

更正您代码的缩进。 –

回答

3

既然你之前不宣布“行”您“尝试:”它不会被定义的块,如果有一个例外。尝试将rows = []放在try以上。

+0

是的..我们解决了“分配之前引用的”UnboundLocalError:局部变量“行”问题。 Whoohoo! – desimusxvii

+0

是啊,谢谢!但我怎么现在可以在数据库中获得我的查询?我也在我的代码中寻找缩进,但它看起来不错? – patrick

+0

我们会看起来像你得到一个例外。你能打印这个结果吗?这是str(sys.exc_info()) – desimusxvii

相关问题