python - 在数据库中实现匹配

标签 python mysql sql database django

我正在开展一个项目,人们每天都会选择某些时段。然后我将处于同一位置的人相互匹配。我正在使用一个单独的表来实现这一点。我目前使用的设计是

user_id (FK to user table)
created
updated
slotno (int)

等效的 django 模型

class Slots(models.Model):
    user_id = models.ForeignKey(User, related_name='user_id')
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    slotno = models.IntegerField(blank=False, null=False)

问题是

  1. 随着时间的推移,该表将变得非常大,导致 增加 SQL 查询的复杂性(一种可能的解决方案是 设置一个作业来检查所有行的时间戳并 删除超过 24 小时的行)
  2. 当我在数据库中查询同一组中的所有用户时 槽位,然后是任何时间在该槽位的所有用户 过去也会出现(主要缺陷)

这个设计肯定有缺陷,但我无法想出一个好的设计来实现该功能。我是数据库设计的菜鸟,这是我第一次必须实现一个不平凡的数据库设计。

PS:我使用 django 1.6.5 和 mysql。

最佳答案

您的查询是什么样的?

如果您只想要今天创建数据库条目的人员,您可以执行类似的操作

from datetime import datetime

today = datetime.today()
today = datetime(today.year, today.month, today.day)

然后您可以根据此进行过滤,例如

your_query.filter(created__gte = today)

至于数据库的大小 - 如果这对您来说确实是一个问题,您可以实现一个归档系统。也许是一个每天运行一次的 cron 作业,并将旧条目写入 .csv 文件或单独的数据库或其他东西。

关于python - 在数据库中实现匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24478711/

相关文章:

mysql - 一个 RTT 中包含多个 SQL 命令?

mysql - 如何在 MySQL 中返回数据透视表输出?

mysql - 类似服务数据库的组织方式

mysql - SQL查询说明

python - Vpython 中的 Matlab 冒号运算符等效项

python - MongoDB 大集合搜索慢

python - Scrapy XPath 页面上的所有链接

mysql - 即使该日期没有数据(在这种情况下,该行应该用零填充),如何为每个日期返回一行?

mysql - 如何更新时间戳

python - Pandas 中的 groupby -Python