人脸识别打卡项目(3)

目录

数据库结构介绍

1 数据库表结构

2 SQLite数据库的安装配置

 1. 连接数据库和建表操作

2. 插入操作

3.查询操作

4. 更新操作

5. 删除操作


数据库结构介绍

为了数据安全,防止被窃取,将考勤打卡数据保存到数据库中。

1 数据库表结构

数据库中主要存放用户打卡考勤的相关信息,表名称为attendance,主要包含用户id、姓名、上班打卡时 间、考勤状态(是否迟到)、下班打卡时间及上班时长等字段,每个字段的类型和说明如表所示。 本案例采用SQLite数据库。

员工考勤状态表

 

2 SQLite数据库的安装配置

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,不需要在系统中配置,也没有繁琐的安装过 程。就像其他数据库,SQLite引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。 SQLite 直接访问其存储文件。

在 Windows 上安装 SQLite,步骤如下:

1. 访问SQLite官网https://www.sqlite.org/download.html,从 Windows 区下载预编译的二进制文件,根 据操作系统32位或者64位,下载对应的sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip压缩文件。

2. 创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 等文件。

3. 添加 C:\sqlite到 PATH环境变量,最后在命令提示符下,使用sqlite3命令,将显示如下结果。

C:\Users\Administrator>sqlite3
SQLite version 3.32.3 2020-06-18 14:00:33
Enter ".help" for usage hints.
Enter SQL statements terminated with a ";"
sqlite>

3 SQlite的python操作

SQLite3 可使用 sqlite3 模块与 Python 进行集成。sqlite3 模块是由 Gerhard Haring 编写的。它提供了一 个与 PEP 249 描述的 DB-API 2.0 规范兼容的 SQL 接口。Python 2.5.x 以上版本中,内置了sqlite3模 块,所以不需要额外安装,直接导入即可。

import sqlite3

为了使用 sqlite3 模块,首先必须创建一个表示数据库的连接对象,然后有选择地创建光标对象,这将帮 助我们执行所有的 SQL 语句。如表所示是重要的 sqlite3 模块程序,可以满足 Python 程序中使用 SQLite 数据库的需求。

 

 1. 连接数据库和建表操作

下面的 Python 代码显示了如何连接到一个现有的数据库并创建一个表。如果数据库不存在,那么它就 会被创建,最后将返回一个数据库对象。

import sqlite3
conn = sqlite3.connect('test.db')
print("Opened database successfully!")
c = conn.cursor()
c.execute('''CREATE TABLE COMPANY
        (ID INT PRIMARY KEY NOT NULL,
          NAME TEXT NOT NULL,
          AGE INT NOT NULL,
          ADDRESS CHAR(50),
          SALARY REAL);''')
print("Table created successfully")
conn.commit()
conn.close()

2. 插入操作

下面的 Python 程序显示了如何在上面创建的 COMPANY 表中创建记录。

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (1, 'Paul', 32, 'California', 20000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (2, 'Allen', 25, 'Texas', 15000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )")
c.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )")
conn.commit()
print("Records created successfully!")
conn.close()

3.查询操作

下面的 Python 程序显示了如何从前面创建的 COMPANY 表中查询并显示记录。

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
cursor = c.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print("ID = ", row[0])
print("NAME = ", row[1])
print("ADDRESS = ", row[2])
print("SALARY = ", row[3], "\n")
print("Operation done successfully")
conn.close()

4. 更新操作

下面的 Python 代码显示了如何使用 UPDATE 语句来更新任何记录,然后从 COMPANY 表中获取并显 示更新的记录。

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")
conn.commit()
print("Total number of rows updated :", conn.total_changes)
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print("ID = ", row[0])
print("NAME = ", row[1])
print("ADDRESS = ", row[2])
print("SALARY = ", row[3], "\n")
print("Operation done successfully")
conn.close()

5. 删除操作

下面的 Python 代码显示了如何使用 DELETE 语句删除任何记录,然后从 COMPANY 表中获取并显示剩余的记录。

import sqlite3
conn = sqlite3.connect('test.db')
c = conn.cursor()
c.execute("DELETE from COMPANY where ID=2;")
conn.commit()
print("Total number of rows deleted :", conn.total_changes)
cursor = conn.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print("ID = ", row[0])
print("NAME = ", row[1])
print("ADDRESS = ", row[2])
print("SALARY = ", row[3], "\n")
print("Operation done successfully")
conn.close()

本节课我们学习了数据库结构介绍的相关内容。下节课我们将学习服务器打卡函数实现的相关内容。我会带着大家一起完成人脸识别打卡项目的所有内容。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_54822781

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值