如何正确关闭与SQLite数据库的连接?

时间:2015-04-02 03:48:41

标签: python sqlite

我遇到一个问题,我突然得到很多SQLite3操作错误 - 我的数据库被锁定了。我认为这是因为我在我的程序中打开了很多次数据库。那么,我该如何确保这不会发生?

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连接到方法之外?但话说回来,我总共使用了两个数据库。

1 个答案:

答案 0 :(得分:0)

对我来说,似乎通过终端和python file.py开始运行python文件,而不是在sublimetext2中只需要ctrl + B.