sqlalchemy类中的函数可以执行查询吗?

2024-05-16 01:15:29 发布

您现在位置:Python中文网/ 问答频道 /正文

在这里,我可能会为过于面向对象的思维方式感到内疚,但我总是回到一种看起来一点都不友好的模式。你知道吗

简化数据元素描述:-

我有一个考勤表,具有各种属性,包括打卡、午餐、午餐和打卡(所有类型的时间)、员工ID和日期。你知道吗

不同的员工可以有不同的轮班时间,这取决于一周中的哪一天和一个月中的哪一天。员工类别汇总在员工表中,轮班时间等汇总在工时表中。休假表指定半天/全天休假。你知道吗

我有来自另一个来源(第三方,基本上认为这是一个csv)的原始报到时间,我排序,然后需要正确地插入考勤表,我想我应该是正在执行:- a) 以最早的时间作为打卡时间 b) 以最晚时间为下班时间 c) 根据员工当天的班次,将剩余时间与指定的午餐时间进行比较

c)是一个给我带来麻烦的问题,因为有些员工在奇数时间办理入住手续(也许他们需要跑出去一个小时去见客户),而有些员工根本不办理用餐登记手续(进餐等)。因此,我需要将剩余时间与指定的午餐时间进行模糊匹配,这意味着我也必须访问小时表。你知道吗

我试着在出勤课的一个函数中完成所有这些,这样看起来就像本文件:你知道吗

class Attendance(Base):
    ... my attributes ...
    def calc_attendance(self, listOfTimes):
        # Do the necessary

不过,似乎我需要在calc\u考勤函数中执行更多查询。我甚至不确定这是否可行,而且看起来我不应该这么做。你知道吗

我可以在调用函数中执行多个查询,但这看起来比较混乱。我还考虑了多个加入,以便提供必要的信息(每天针对每个员工)。他们两个都不觉得对,但如果有必要,请纠正我。你知道吗


Tags: 函数方式时间模式员工calc面向对象思维
1条回答
网友
1楼 · 发布于 2024-05-16 01:15:29

简言之,是的,你似乎试图把所有的东西塞进一个类,但这不是“错”,这只是你把东西塞进哪个类。你知道吗

回答实际问题:是的,您可以在另一个类中执行查询,或者使该类将自身转换为dict或其他iter-able格式,从而在某些方面使比较更容易。你知道吗

然而,我在实践中发现,从时间的角度来看,为每个表构建一个类并使用内部函数对该表的特定数据应用修改,以及执行特定“任务”比较、数据输入等的覆盖伞式“作业”类通常更为有效。。。但它封装了这个过程,以便将来可以扩展并被其他更高级别的类使用。这允许在它们各自的类中完成特定于表的工作,但是要对组进行比较和模糊匹配,而不会弄乱它们各自的表。这使得维护代码更容易,并且可以在一个组中分割工作。它还允许对每项任务有更清晰的关注。从理论上讲,它还允许将来进行asyncio和其他优化。你知道吗

所以: 主要工作(班级)
(各种比较功能、数据输入验证等…)
|->;表1类实例
|->;表2类实例

如果您需要实际的例子,我们很乐意提供进一步的帮助。你知道吗

相关问题 更多 >