如何从 Treeview / Tkinter (SQLite) 中的不同表中获取不同的值?

How to get different values from different tables in Treeview / Tkinter (SQLite)?

我一直在使用 Tkinter,我试图从我的 Treeview 中的不同 table 获取不同的列,我使用 SQLite 作为数据库,在我的第一个 table 调用中registers 我有不同的列 idcard,name,surname,cellphone,address,email 等 在我的第二个 table named [=15] =]attendance 我用来通过 ID 号存储我的条目出勤我的意思是我有两个条目 cardin = entry1cardout = entry1 所以如果我的条目之一与我的 寄存器匹配table idcard, 它自动存储 idcard, timein, timeout, date 在我的 attendance table直到它工作得很好,但我无法从我的第一个 table registers 中获取 names, surnames columns 并存储它们在我的第二个 table attendace 中与我的 idcard, timein, timeout, date 相同(身份证、姓名、姓氏必须与首先 table),我试图解决它但我失败了,我真的不知道该怎么做,任何帮助都在广告中万斯。祝你有美好的一天。这是我的代码:

def botoningreso():

    time = datetime.now().strftime("%I:%M%p")
    date = datetime.now().strftime("%d/%m/%Y")

    conn = sqlite3.connect('database.db')
    c = conn.cursor()

    cardin = entry1.get()
    cardout = entry2.get()

    c.execute('SELECT * FROM registers WHERE idcard = ? OR idcard = ?', (cardin, cardout))

    if c.fetchall():
        messagebox.showinfo(title='ID Registered', message='Registered Succefully')
        c.execute("INSERT INTO attendance (timein, idcard, date) VALUES (?, ?, ?)", (time, cardin, date)) #Here i also wanto to save *names and surnames* from the first table *registers* that match with the idcard column.
        conn.commit()

    else:
        messagebox.showerror(tittle=None, message='Wrong ID card')

    c.close() 

为获取的数据分配一个变量,然后对其进行索引并继续:

data = c.fetchall()

if data:
    username = data[0][1] # Access username from fetched list
    surname = data[0][2] # Access surname

    messagebox.showinfo(title='ID Registered', message='Registered Succefully')
    c.execute("INSERT INTO attendance (timein,idcard,date,user,sur) VALUES (?,?,?,?,?)", (time,cardin,date,username,surname)) 
    conn.commit()

将变量分配给 c.fetchall() 很重要,因为它的行为类似于生成器对象,一旦使用就会丢失其项目。