python+sqlite3:将数据保存到数据库中,再显示到界面上

1. 描述
最近在做一个类似人脸识别的打卡系统,最后收尾阶段,需要将打卡成功的学生信息保存到sqlite3数据库中,并且能显示到对应的界面上,最后实现的界面,直接上图:
python+sqlite3:将数据保存到数据库中,再显示到界面上_第1张图片
2. 设计思路
1.首先是打卡成功后将数据插入到sqlite3中。

 #将签到成功的数据写入sqlite3中
    def save_tosqlite3(self,id,name,department,datetime):
        self.id = id
        self.name = name
        self.department = department
        self.datetime = str(datetime)
        print(self.datetime)
        conn = sqlite3.connect('my.db')
        c = conn.cursor()
        #c.execute('CREATE TABLE STUDENT_2(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,DEPARTMENT TEXT NOT NULL,DATE TXET NOT NULL)')
        c.execute("INSERT INTO STUDENT_2(ID,NAME,DEPARTMENT,DATE) VALUES (?,?,?,?)",(self.id,self.name,self.department,self.datetime))
        conn.commit()#这句一定要写上!!!表示提交事务,写上了才能保存到数据库中。
        

2.其次是获取数据并显示到界面上

 def search_tosqlite3(self):
        conn = sqlite3.connect('my.db')
        c = conn.cursor()
        print("Opened database successfully")
        # 查询操作
        #c.execute("INSERT INTO STUDENT_2(ID,NAME,DEPARTMENT,DATE) VALUES (1,'f','s','2020-10-8')")
        print("添加成功")
        cursor = c.execute("SELECT ID,NAME,DEPARTMENT,DATE FROM STUDENT_2")
        print("查询成功")
        for row in cursor:
            print("ok1")
            print("ID = ", row[0])
            print("NAME = ", row[1])
            print("ADDRESS = ", row[2])
            print("DATETIME = ", row[3])
            id = str(row[0])
            user = row[1]
            department = row[2]
            date_time = row[3]
            #insertRow()添加第几行的数据,可以通过for循环的执行次数来判断
            rowcount = self.tableWidget.rowCount()
            self.tableWidget.insertRow(rowcount)
            # 插入数据
            self.tableWidget.setItem(rowcount, 0, QTableWidgetItem(id))
            self.tableWidget.setItem(rowcount, 1, QTableWidgetItem(user))
            self.tableWidget.setItem(rowcount, 2, QTableWidgetItem(department))
            self.tableWidget.setItem(rowcount, 3, QTableWidgetItem(date_time))

3.小结
在做的过程中,遇到两个困难,其一,在插入数据到sqlite3时,有变量该如何操作?见我之前写的一篇文章:python+sqlite3:如何在sqlite3插入中加入变量
其二,对于数据库的操作比较生疏,遗忘了conn.commit()语句导致数据没有保存成功。

你可能感兴趣的:(python+sqlite3:将数据保存到数据库中,再显示到界面上)