在新数据库中加载,错误:sqlite3无法在关闭数据库上运行

时间:2015-04-30 04:48:23

标签: python database sqlite

所以我在我的GUI(Tkinter)中添加了一个选项,允许你加载一个新的数据库(通过filedialog),但它给了我这个:

sqlite3.ProgrammingError: Cannot operate on a closed database.

这是我的代码:

def load_database(self):
    file_path = filedialog.askopenfilename( filetypes = ( ("Database Files", "*.dB"), ("All files", "*.*") ) )
    print (file_path)
    if (file_path == "" or file_path == ()):
        return
    else:
        conn.close()
        self.reconnect_to_database(file_path)

def reconnect_to_database(self, file_path):
    conn = sqlite3.connect(file_path)  
    cursor = conn.cursor()
    cursor.execute("""CREATE TABLE if not exists Cards
              (trackOne text, trackTwo text, trackThree text) 
           """)
    conn.commit()

conn = sqlite3.connect("database.db")  
cursor = conn.cursor()

只是想知道如何关闭sqlite3连接并加载+打开一个新数据库。

谢谢!

1 个答案:

答案 0 :(得分:0)

reconnect_to_database中,您正在创建连接并将其保存到本地变量;全局conn不受影响。在该函数中添加global conn以更改全局变量。