使用os.chdir时无法再次访问SQLite数据库

gmol1639  于 2022-11-15  发布在  SQLite
关注(0)|答案(1)|浏览(172)

我的程序在Python(TKintert)中根据存储在SQLite数据库中的命名约定重命名文件。fetch_db()只能执行一次,第二次出现错误消息
“无法打开数据库文件”
出现了。这是由于path = os.chdir(folder_selection.get()),如果没有它,fetch_db()可以多次执行。
相关代码:

import sqlite3
import os
from tkinter import *

def fetch_db():
    connection = sqlite3.connect("database/database.db")
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM employees")
    emp_rows = cursor.fetchall()
    connection.commit()
    connection.close()
    return emp_rows

def rename():
    db_data = fetch_db()
    #print(db_data)
    path = os.chdir(folder_selection.get())

#TKINTER UI
root = Tk()
root.title("Lohnabrechnung hochladen")
root.geometry("600x600")

# Select folder & Button
folder_selection = Entry(root, width=80)
folder_selection.grid(row=6, column=0, sticky=W, padx=10)
select_f = Button(root, text="Rename", command=rename)
select_f.grid(row=7,column=0, sticky=W, padx=10)

root.mainloop()

Image
操作系统模块是否会导致与SQLite数据库结合出现问题?

1u4esq0p

1u4esq0p1#

问题不在于操作系统模块,而在于您使用的是数据库文件的相对路径。更改工作目录时,相对路径不再有效,因为它是相对于工作目录的。
您应该在程序启动时计算绝对路径,并将其保存在变量中。这样,当您更改工作目录时,绝对路径将继续工作。

相关问题