0

我有以下 Django 代码正在 PostgreSQL 和 Huey(一个自动调度程序)上运行。问题是,每当运行周期性任务时,Django 都会删除表中的先前行,而不是添加到现有行中。

预定代码:

@periodic_task(crontab(minute='*/1'))
def scheduled():
    team = nitrotype.Team('PR2W')

    team_id = team.data["info"]["teamID"]
    timestamp = datetime.datetime.now()
    
    for members in team.data["members"]:
        racer_id = members["userID"]
        races = members["played"]
        time = members["secs"]
        typed = members["typed"]
        errs = members["errs"]

        rcd = RaceData(
            racer_id=racer_id,
            team_id=team_id,
            timestamp=timestamp,
            races=races,
            time=time,
            typed=typed,
            errs=errs
        )
        rcd.save()

基本上,上面的代码每分钟都会运行一次。这是我开始使用的数据库 (PSQL) 数据:

nttracker=# TABLE data_racedata;
 racer_id | team_id | timestamp  | races  |  time   |  typed   |  errs  
----------+---------+------------+--------+---------+----------+--------
 35051013 |  765879 | 1623410530 |   4823 |  123226 |   793462 |  42975
 35272676 |  765879 | 1623410530 |   8354 |  211400 |  1844434 |  38899
 36690038 |  765879 | 1623410530 |    113 |    2849 |    16066 |    995
 38486084 |  765879 | 1623410530 |  34448 |  903144 |  8043345 | 586297
 38625235 |  765879 | 1623410530 |    108 |    2779 |    20919 |   1281
 39018052 |  765879 | 1623410530 |   1908 |   48898 |   395187 |  24384
 39114823 |  765879 | 1623410530 |   2441 |   64170 |   440503 |  32594 

...

(50 rows)

之后,我运行 Huey,它scheduled()每分钟执行一次。这是两分钟后我得到的结果(换句话说,两次迭代):

nttracker=# TABLE data_racedata;
 racer_id | team_id | timestamp  | races  |  time   |  typed   |  errs  
----------+---------+------------+--------+---------+----------+--------
 35051013 |  765879 | 1623410992 |   4823 |  123226 |   793462 |  42975
 35272676 |  765879 | 1623410992 |   8354 |  211400 |  1844434 |  38899
 36690038 |  765879 | 1623410992 |    113 |    2849 |    16066 |    995
 38486084 |  765879 | 1623410992 |  34448 |  903144 |  8043345 | 586297
 38625235 |  765879 | 1623410992 |    108 |    2779 |    20919 |   1281
 39018052 |  765879 | 1623410992 |   1908 |   48898 |   395187 |  24384
 39114823 |  765879 | 1623410992 |   2441 |   64170 |   440503 |  32594

...

(50 rows)

注意:大多数数据只是碰巧相同,自动执行生成的数据之间的时间戳总是不同的。

我想要 150 行而不是 50 行,因为我希望数据累积而不是替换以前的数据。谁能告诉我我哪里错了?

如果有人需要额外的日志输出,请在下面发表评论。

编辑模型

class RaceData(models.Model):
    racer_id = models.IntegerField(primary_key=True)
    team_id = models.IntegerField()
    timestamp = UnixDateTimeField()
    races = models.IntegerField()
    time = models.IntegerField()
    typed = models.IntegerField()
    errs = models.IntegerField()

提前致谢。

4

0 回答 0