首页 > 数据库 >考勤打卡mysql表

考勤打卡mysql表

时间:2023-07-16 16:32:25浏览次数:40  
标签:记录 数据库 MySQL 员工 cursor mysql 打卡 考勤

如何实现考勤打卡 MySQL 表

1. 整体流程

为了实现考勤打卡功能,我们需要创建一个 MySQL 表来存储每个员工的打卡记录。下面是整个过程的步骤概述:

步骤 描述
1. 创建数据库和表 首先创建一个数据库,并在该数据库中创建一个表来存储员工的打卡记录。
2. 连接数据库 使用代码连接到 MySQL 数据库。
3. 插入打卡记录 在每次员工打卡时,将其打卡记录插入到 MySQL 表中。
4. 查询打卡记录 可以根据需要查询员工的打卡记录。
5. 更新打卡记录 例如,当员工忘记打卡时,可以更新其打卡记录。
6. 删除打卡记录 可以删除不再需要的打卡记录。

接下来,我们将逐步介绍每个步骤所需的代码以及对代码的注释。

2. 创建数据库和表

首先,我们需要创建一个数据库,用于存储员工的打卡记录。可以使用以下代码创建数据库:

CREATE DATABASE 考勤系统;

接下来,我们需要在该数据库中创建一个表来存储打卡记录。这里我们假设员工表的结构如下:

列名 数据类型 描述
id INT 员工ID
name VARCHAR(50) 员工姓名
timestamp DATETIME 打卡时间戳

可以使用以下代码创建员工表:

USE 考勤系统;

CREATE TABLE 打卡记录 (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  timestamp DATETIME NOT NULL
);

3. 连接数据库

在编写代码之前,我们需要安装并导入 MySQL 连接驱动程序。使用以下代码连接到 MySQL 数据库:

import mysql.connector

# 建立数据库连接
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  password="yourpassword",
  database="考勤系统"
)

# 创建游标对象
cursor = mydb.cursor()

请注意替换 yourusernameyourpassword 为你自己的 MySQL 用户名和密码。

4. 插入打卡记录

当员工打卡时,我们需要将其打卡记录插入到 MySQL 表中。使用以下代码执行插入操作:

# 获取员工姓名和当前时间戳
name = input("请输入员工姓名:")
timestamp = datetime.now()

# 构造插入语句
sql = "INSERT INTO 打卡记录 (name, timestamp) VALUES (%s, %s)"
values = (name, timestamp)

# 执行插入操作
cursor.execute(sql, values)

# 提交事务
mydb.commit()

# 打印插入后的行数
print(cursor.rowcount, "行插入成功。")

5. 查询打卡记录

我们可以根据需要查询员工的打卡记录。使用以下代码执行查询操作:

# 构造查询语句
sql = "SELECT * FROM 打卡记录"

# 执行查询操作
cursor.execute(sql)

# 获取所有结果
results = cursor.fetchall()

# 打印打卡记录
for row in results:
  print(row)

6. 更新打卡记录

在某些情况下,我们可能需要更新员工的打卡记录,例如当员工忘记打卡时。使用以下代码执行更新操作:

# 获取要更新记录的员工ID
id = input("请输入要更新记录的员工ID:")

# 构造更新语句
sql = "UPDATE 打卡记录 SET timestamp = %s WHERE id = %s"
values = (datetime.now(), id)

# 执行更新操作
cursor.execute(sql, values)

# 提交事务
mydb.commit()

# 打印更新后的行数
print(cursor.rowcount, "行更新成功。")

7. 删除打卡记录

如果某些打卡记录不再需要,我们可以使用以下代码执行删除操作:

# 获取要删除记录的员工ID
id = input("请输入

标签:记录,数据库,MySQL,员工,cursor,mysql,打卡,考勤
From: https://blog.51cto.com/u_16175446/6738623

相关文章

  • MySQL 的全局锁、表锁和行锁
    在前一篇文章我讲了下MySQL的全局锁、表记锁和行级别锁,其中行级锁只提了概念,并没有具体说。因为行级锁加锁规则比较复杂,不同的场景,加锁的形式还不同,所以这次就来好好介绍下行级锁。对记录加锁时,加锁的基本单位是next-keylock,它是由记录锁和间隙锁组合而成的,next-keylock......
  • 用python爬去电影评分保存进mysql
    用Python爬取电影评分保存进MySQL在今天的数字化时代,电影评分是人们选择观看电影的重要参考因素之一。那么,如何通过Python爬取电影评分数据,并保存到MySQL数据库中呢?本文将为你提供一种简单的方法来实现这个目标。准备工作在开始之前,我们需要确保已经安装了Python和MySQL,并且已经......
  • MySQL为什么不建议使用delete删除数据?
    这篇文章我会从InnoDB存储空间分布,delete对性能的影响,以及优化建议方面解释为什么不建议delete删除数据。InnoDB存储架构从这张图可以看到,InnoDB存储结构主要包括两部分:逻辑存储结构和物理存储结构。逻辑上是由表空间tablespace—> 段segment或者inode—>区Extent——>......
  • MySQL锁
    全局锁对数据库加锁,典型使用场景是全库备份。加全局读锁,整库只读:Flushtableswithreadlock(FTWRL)。针对全库只读,不使用setglobalreadonly=true,使用FTWRL的原因:1.readonly的值可能用来做逻辑判断,例如判断是主库还是备库。2.FTWRL在客户端异常断开连接后自动释放全局锁,re......
  • MySQL主备
    MySQL主备同步原理1备库io_thread通过长连接获取主库的binlog2备库sql_thread执行binlog节点A和B之间互为主备关系,都认为对方是主,切换时不用再修改主备关系。解决双Mbinlog循环同步问题1A更新的事务,binlog记的是A的serverid2B同步后生成的binlog的serverid也是A的serveri......
  • mysql安装
    安装方式选择:二进制、源码、yum安装(生产选择二进制安装)参考链接:https://www.cnblogs.com/yyxianren/p/11319544.html1.卸载默认安装的mariadb:  yumremovemariadb*-y2.添加mysql用户:  useradd-s/sbin/nologin-Mmysql3.解压tar文件并移动到指定目录,并赋权: ......
  • MySQL索引
    主键索引和普通索引结构上的区别每一个索引在InnoDB里面对应一棵B+树。有一个主键列为ID的表,表中有字段k,在k上有索引。CREATETABLET(  idintPRIMARYKEY,  kintNOTNULL,  namevarchar(16),  INDEX(k))ENGINE=InnoDB;表中R1~R5的(ID,k)值分别为(100,1......
  • MySQL自增值
    InnoDB引擎1自增值的保存机制MySQL5.7及之前的版本自增值保存在了内存里面,MySQL8.0版本才有自增值持久化能力(把自增值的变更记录在了redolog,重启后依靠redolog回复)。每次重启后,把自增值的最大值max(id)+1作为这个表当前的自增值。例如,一个表最大的id是10,AUTO_INCREMENT=11,删......
  • mysql主从复制
    1.MySQL主从复制介绍  主从复制实现的原理:(同步二进制日志文件)  主服务器开启二进制日志功能,当mysql进行操作同时生成一条操作事件日志,  并写入二进制日志文件中,从服务器通过同步二进制日志文件,并在从服务器  重新执行该事件,从而实现主从复制。2.主从服务器配置 ......
  • docker yum mysql
    Docker容器中使用Yum安装MySQL概述Docker是一个流行的容器化平台,它允许我们在独立、可移植的容器中运行应用程序。Yum(YellowdogUpdaterModified)是RedHatLinux和CentOS操作系统中的一个软件包管理器,它可以方便地用于安装、更新和删除软件包。本文将介绍如何在Docker容器中使用......