Сохранять новую сущность (играть), только если нет столкновения даты и времени - PullRequest
0 голосов
/ 22 декабря 2018

Я строю систему бронирования на Python и SQLite.

У меня есть Staff.db и Play.db (отношение один ко многим).Идея заключается в следующем: единственный сотрудник театра может выбрать, когда добавить пьесу, указав дату и время ее начала.Я сохранил дату / время в Play.db в виде строки «ГГГГ-ММ-ДД ЧЧ: ММ».Однако, поскольку в театре есть только одна комната, сотрудник может добавить пьесу, только если его время «ГГГГ-ММ-ДД ЧЧ: ММ» не конфликтует с уже существующими пьесами.Важная информация: каждая игра длится только 1 час.

Мой вопрос: Как создать функцию Python или запрос SQLite, чтобы сотрудник мог добавлять новую игру только тогда, когда она некласс с уже существующими пьесами?

Я понял две вещи:

  • Я должен получить дату начала каждой игры
  • К этой дате начала я должендобавьте +1 час, чтобы узнать, свободен ли этот «период»

Проблема в том, что я безуспешно пытался выполнить некоторые запросы с SQL, но я не совсем уверен, как решить эту проблему.

1 Ответ

0 голосов
/ 22 декабря 2018

Примерно так должно работать (я бы подумал):

import datetime

now = datetime.datetime.now()
next_hour = now + datetime.timedelta(hours=1)

now = now.strftime('%Y-%m-%d %H:%M')
next_hour = next_hour.strftime('%Y-%m-%d %H:%M')

query = ("SELECT COUNT(*) FROM mytable WHERE "
         "play_start >= %s AND plan_start <= %s" % (now, next_hour))
# If the query value is larger than 0, you have a clash

Конечно, в этом примере в качестве времени поиска используется now().Вы бы четко подставили фактическое время поиска, но я использовал now() в качестве примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...