在Django视图中使用时间戳范围过滤错误

时间:2020-05-31 16:58:30

标签: python django django-views timestamp

当我想使用一个确切的日期过滤模型时,我使用以下代码行,

    C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe --host=localhost --port=3306 -u root nd7b265_rahetbally
Task 'MySQL script' started at Sun May 31 09:53:09 MST 2020
ERROR 2013 (HY000) at line 118827: Lost connection to MySQL server during query
Task 'MySQL script' finished at Sun May 31 09:53:13 MST 2020
2020-05-31 09:53:13.363 - IO error: Process failed (exit code = 1). See error log.
2020-05-31 09:53:13.363 - java.io.IOException: Process failed (exit code = 1). See error log.
    at org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolHandler.executeProcess(AbstractNativeToolHandler.java:182)
    at org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolHandler.doExecute(AbstractNativeToolHandler.java:237)
    at org.jkiss.dbeaver.tasks.nativetool.AbstractNativeToolHandler.lambda$0(AbstractNativeToolHandler.java:52)
    at org.jkiss.dbeaver.runtime.RunnableContextDelegate.lambda$0(RunnableContextDelegate.java:39)
    at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)

当我想使用几天的时间进行过滤时,我使用以下代码行,

today = datetime.datetime.now().date()
today_data = DevData.objects.filter(data_timestamp__date=today)

问题是当我使用第二个代码时,出现警告并且运行非常缓慢,

RuntimeWarning:在启用时区支持的情况下,DateTimeField DevData.data_timestamp收到的日期时间很短(2020-05-31 00:00:00)。

我该怎么做呢?

我找到了这个post,但不知道如何解决。有人可以帮我吗?

2 个答案:

答案 0 :(得分:0)

它运行相当慢的事实可能是因为您没有在data_timestamp字段上设置数据库索引,您可以通过指定db_index=True parameter [Django-doc]来添加一个数据库索引:

class DevData(models.Data):
    data_timestamp = models.DateTimeField(db_index=True)
    # …

您还可以通过在查询中添加__date lookup [Django-doc]来过滤数据:

last7days = datetime.datetime.now().date() - datetime.timedelta(days=7)
last7days_data = DevData.objects.filter(
    data_timestamp__date__range=(last7days,today)
)

答案 1 :(得分:0)

您看到警告,因为last7days变量不支持时区。

您可以像这样使时区感知:

import datetime
from datetime import timezone

unaware = datetime.datetime(2020, 1, 1, 1, 1, 1, 1)
aware = unaware.replace(tzinfo=timezone.utc))
相关问题