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



我一直在与Tkinter合作,我试图从我的Treeview中的不同表中获得不同的列,我使用SQLite作为数据库,在我的第一个表中称为寄存器我有不同的栏身份证,姓名,姓氏,手机,地址,电子邮件等在我的第二个名为考勤的表中我用ID号来存储我的条目考勤我的意思是我有两个条目cardin = entry1cardout = entry1所以如果我的一个条目与我的寄存器表idcard匹配,自动存储id、timein、timeout、date在我的考勤表直到它工作得很好,但是我不能得到名字,姓氏列从我的第一个表寄存器并将它们存储在我的第二个表出席与myidcard, timein, timeout, date相同(身份证,姓名,姓氏必须从第一张表匹配),我试图解决它,但我失败了,我真的不知道怎么做,任何帮助提前谢谢。祝你过得愉快。下面是我的代码:

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()是很重要的,因为它的行为就像一个生成器对象,一旦使用它就会失去它的项。

最新更新