首页 > 编程问答 >Python (Django) 数据操作

Python (Django) 数据操作

时间:2024-07-22 14:58:01浏览次数:12  
标签:python django

“如何将 Excel 考勤数据转换为特定的数据库插入格式?”

**我 Excel 中的数据如下所示:
**
这是数据格式

I **需要将其转换为适合数据库插入的格式,如下所示:

**
我想要的数据


将 Excel 考勤数据转换为特定数据库插入格式的 Python (Django) 代码示例

1. 安装必要的库

pip install pandas openpyxl

2. 读取 Excel 数据

import pandas as pd

# 使用 pandas 读取 Excel 文件
df = pd.read_excel("考勤数据.xlsx", header=1) 

# 将 "日期" 列转换为日期时间格式
df['日期'] = pd.to_datetime(df['日期'])

3. 数据转换和格式化

from django.db import models

class Attendance(models.Model):
    employee_id = models.IntegerField()
    date = models.DateField()
    in_time = models.TimeField(null=True)
    out_time = models.TimeField(null=True)
    status = models.CharField(max_length=20)

# 创建一个空列表来存储转换后的数据
attendance_data = []

# 遍历每一行数据
for index, row in df.iterrows():
    # 获取员工 ID
    employee_id = row['员工 ID']

    # 遍历每一列(从第三列开始,因为前两列是 "员工 ID" 和 "日期")
    for col_index in range(2, len(df.columns), 2):
        # 获取日期和时间
        date = row['日期']
        in_time = row.iloc[col_index] if not pd.isna(row.iloc[col_index]) else None
        out_time = row.iloc[col_index + 1] if not pd.isna(row.iloc[col_index + 1]) else None

        # 确定状态
        if in_time and out_time:
            status = "Present"
        elif in_time:
            status = "Left Early"
        else:
            status = "Absent"

        # 将数据添加到列表中
        attendance_data.append(
            Attendance(
                employee_id=employee_id,
                date=date,
                in_time=in_time,
                out_time=out_time,
                status=status
            )
        )

4. 批量插入数据库

# 使用 Django ORM 批量创建记录
Attendance.objects.bulk_create(attendance_data)

代码解释:

  • 使用 pandas 库读取 Excel 数据,并将其存储在 DataFrame 中。
  • 使用循环遍历每一行数据,并提取员工 ID、日期、时间和状态等信息。
  • 使用条件语句根据时间信息确定状态。
  • 将提取的数据存储在一个列表中,并使用 Attendance 模型进行格式化。
  • 最后,使用 bulk_create() 方法将列表中的数据批量插入到数据库中。

注意:

  • 这段代码只是一个示例,需要根据的实际情况修改代码,例如修改 Excel 文件名、数据库模型等。
  • 可以根据需要修改代码中的逻辑,例如添加数据验证、错误处理等功能。

希望这段代码可以帮助将 Excel 考勤数据转换为 Django 数据库可以接受的格式。

标签:python,django
From: 78777258

相关文章

  • 在 python 中表示矩阵等价类的好方法是什么?
    我正在尝试编写一个程序来对井字棋进行强化学习。我希望引擎认识到,如果您反射棋盘或旋转它,您会得到完全相同的游戏,因此这些棋盘应该被视为彼此相同。目前我有一本字典,代表我当前对每个棋盘的估计估值游戏中的棋盘,每次游戏结束时,该游戏期间发生的所有棋盘位置的估值都会根据它......
  • MIT自学---python---6.100A_lecture2
    MIT自学---python---6.100A_lecture2前言一、设置python编译器地址二、将运行python文件的命令简化三、终端尝试执行简单python命令四、今日学到的python命令个人总结前言  这两天去听讲座,没什么时间按照计划自学MIT,今天赶紧补上。今天主要任务是搭建vscodepython......
  • python pip 需要构建工具,而它已经安装
    我看到这个问题已经被发布了很多次,人们设法解决了这个问题,但我没有!!操作系统版本:Windows1021H1Build19043.1288Python版本:Python3.9.7(tags/v3.9.7:1016ef3,Aug302021,20:19:38)[MSCv.192964bit(AMD64)]onwin32Pip、wheel和setuptool都可以日期:......
  • 无法在浏览器中访问Python 127.0.0.1:8000上的本地主机
    fromdjango.contribimportadminfromdjango.urlsimportpath,includeurlpatterns=[path('admin/',admin.site.urls),path('products/'),include('products.urls')#thisline]嗨,任何人。很抱歉问这样的问题,但这是我第一次尝试python。......
  • 在 VSCode 中通过 Python 使用 YouTube API 时如何启用 Intellisense
    我想在使用GoogleYouTubeAPI和Python时在VSCode中获得IntelliSense。但我不知道详细步骤。fromgoogleapiclient.discoveryimportbuildapi_key="****"youtube=build("youtube","v3",developerKey=api_key)request=youtube.channels().list(part......
  • 当 python 脚本通过 jenkins + Github 在 Windows 本地计算机上运行时,chrome 浏览器不
    我的Python代码是(windowsMachine)fromseleniumimportwebdriverprint("newLine")print("2Line")print("3Line")holdChrome=webdriver.ChromeOptions()holdChrome.add_experimental_option("detach",True)#Restricta......
  • python_基础_数据类型
    基础数据类型不需要声明,只有被赋值后才会创建变量。变量本身没有类型,“类型”指的是所存值的类型。类型判断type(x)和isinstance(x,int)前者不会认为子类是一种他的父类类型后者会认为子类是父类类型>>>classA:...pass...>>>classB(A):...pass......
  • IPython 使用技巧
    IPython是一个强大的交互式Pythonshell,提供了许多方便的功能,使Python编程更加高效和愉快。本文将介绍一些IPython的实用技巧,帮助开发者充分利用其功能,提高编程效率。1.基本操作和快捷键1.1启动IPython可以通过在终端输入以下命令来启动IPython:ipython启动后,你......
  • 【python】类方法和静态方法的区别
    类方法和静态方法在Python中都可以用来定义与类相关的功能,但它们有不同的使用场景和优缺点。虽然类方法也可以用来实现验证逻辑,但静态方法在某些情况下更合适。让我们详细看看这两种方法的区别以及为什么在某些情况下静态方法可能更适合验证功能。类方法和静态方法的区别类......
  • Python自动化:一键提取千万个Excel指定数据
    一、传统方法的局限性打开每个Excel文件,逐个查找需要的数据。筛选出老板需要的数据列。复制并粘贴到新的工作表中。保存并关闭每个文件。这个过程不仅耗时,而且容易出错。每一次的筛选都可能遗漏数据,每一次的复制粘贴都可能引入错误。二、Python自动化的解决方案i......