2015-04-02 54 views
0

我有一個問題,我突然收到很多SQLite3操作錯誤 - 我的數據庫被鎖定。我認爲這是因爲我在程序中打開了很多次數據庫。那麼,我如何確保這不會發生?如何正確關閉連接到SQLite數據庫?

def getID(databasepath): 
    con = lite.connect(databasepath) 
    with con: 
     cur = con.execute("SELECT userid, name from Table") 
     con.commit() 
     rows = [[x[0], x[1]] for x in cur] 
    con.close() 
    return rows 

def findIDsomewhereElse(databasepath): 
    con = lite.connect(databasepath) 
    with con: 
     cur = con.execute("SELECT userid FROM table2") 
     con.commit() 
     all_rows = cur.fetchall() 
     all_rows = sorted(all_rows, key=itemgetter(0), reverse=True) 
    con.close() 
    return all_rows 

主營:

id = getId('firstpath') 
userid = id[0] 
con = lite.connect('secondpath') 
    with con: 
      cur = con.execute("SELECT max(time) FROM enteringSing WHERE userid = {userid}".format(userid = userid)) 
      con.commit() 
con.close() 
newfind = findIDsomewhereElse('secondpath') 
con = lite.connect('secondpath') 
with con: 
    con.executemany("INSERT INTO table4(columns) VALUES(?)", allrows) 
    con.commit() 
con.close() 

所以我連接到數據庫相當頻繁,是什麼問題?我意識到我可能應該把方法之外的con lite連接?但是再次,我總共使用了兩個數據庫。

回答

0

對我來說,它似乎幫助開始通過終端和python file.py來運行python文件,而不是在sublimetext2中使用ctrl + B。