所以我在我的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连接并加载+打开一个新数据库。
谢谢!
答案 0 :(得分:0)
在reconnect_to_database
中,您正在创建连接并将其保存到本地变量;全局conn
不受影响。在该函数中添加global conn
以更改全局变量。