如何从 Treeview / Tkinter (SQLite) 中的不同表中获取不同的值?
Posted
技术标签:
【中文标题】如何从 Treeview / Tkinter (SQLite) 中的不同表中获取不同的值?【英文标题】:How to get different values from different tables in Treeview / Tkinter (SQLite)? 【发布时间】:2021-05-31 09:16:39 【问题描述】:我一直在使用 Tkinter,我试图从 Treeview 中的不同表中获取不同的列,我使用 SQLite 作为数据库,在我的第一个名为 registers 的表中我得到了不同我的第二个名为 attendance 的表中的列 身份证、姓名、姓氏、手机、地址、电子邮件等 我用来按 ID 号存储我的条目出勤率我的意思是我有两个条目cardin = entry1
和 cardout = entry1
因此,如果我的其中一个条目与我的 注册表 idcard 匹配,它会自动将 idcard、timein、timeout、date 存储在我的 出席中table 直到它运行良好,但我无法从我的第一个表 registers 中获取 names, surnames 列 并将它们存储在我的第二个表中 attendace 与我的 idcard, timein, timeout, date 相同(idcard, names, surnames 必须与第一个表匹配),我试图解决它但我失败了,我真的不知道怎么做,任何帮助都提前。祝你有美好的一天。这是我的代码:
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()
【问题讨论】:
简而言之,您想从第一个表中获取用户名和姓氏,该表的 id 插入到第二个表中? @CoolCloud 是的,直到现在,当我输入存储在我的第一个数据表中的正确 ID 卡后,我的第二个表中才获得 idcard、timein、timeout 和 date。print(c.fetchall()
在if
之前的输出是什么。
@CoolCloud 我之前试过print(c.fetchall()
if 但它没有给我任何价值
这不是说你的查询没有返回任何结果而且是错误的吗?
【参考方案1】:
为获取的数据分配一个变量,然后对其进行索引并继续:
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()
很重要,因为它的行为类似于生成器对象,并且一旦使用就会丢失其项目。
【讨论】:
以上是关于如何从 Treeview / Tkinter (SQLite) 中的不同表中获取不同的值?的主要内容,如果未能解决你的问题,请参考以下文章
python中tkinter treeview如何获取选中的条目