1. 描述 最近在做一个类似人脸识别的打卡系统,最后收尾阶段,需要将打卡成功的学生信息保存到sqlite3数据库中,并且能显示到对应的界面上,最后实现的界面,直接上图: 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()语句导致数据没有保存成功。