Назначить назначение mnet раз в син c и асин c способом в MySQL - PullRequest
0 голосов
/ 23 апреля 2020

Я работаю над системой управления токенами. Токены выдаются в син c и асин c манере. Синхронным образом c токены выдаются на основе текущего времени и времени окончания предыдущего токена. Это в основном очередь. Принимая во внимание, что в асин c токенах пользователь может указать время, в которое он / она хочет назначить встречу. Таким образом, база данных будет проверена, и если этот период времени будет доступен, будет выдан токен. Мой токен syn c работает отлично. Проблема в том, что я не уверен, как синхронизировать базу данных с syn c и асин c токенами.

Например, если какой-то пользователь запрашивает асин c токен во время 15:00: 00 и какой-то другой пользователь просит время 14:00:00. Где текущее последнее время окончания токенов syn c - 12:00:00, как вставить эти данные в таблицу?

Примечание: в определенный момент времени может быть только один активный токен, либо syn c или asyn c. Каждой транзакции назначается максимум 5 минут. Время рассчитывается по сценарию python. bank_open время равно 10:00:00, а close_time равно 18:00:00

Вот таблица MySQL:

+----+-------+--------------------------------------+-----------+-----------------+-----------------+-------------+
| id | type  | token                                | date      | start_time      | end_time        | no_of_trans |
+----+-------+--------------------------------------+-----------+-----------------+-----------------+-------------+
| 36 | sync  | 4059cdea-6e9d-4943-8d4c-f5df99d12ff5 | 2020-4-22 | 15:53:15.347864 | 15:58:15.347864 |           1 |
| 37 | sync  | 5b420dec-9fc2-415f-b2f2-3649a3c6fa26 | 2020-4-22 | 15:58:15.347864 | 16:18:15.347864 |           4 |
| 38 | sync  | 72501a99-c081-48ee-a05d-959499eeb944 | 2020-4-22 | 16:18:15.347864 | 16:33:15.347864 |           3 |
| 39 | sync  | 3d08050e-115f-4bb1-a98a-5991e87c4ead | 2020-4-22 | 16:33:15.347864 | 16:43:15.347864 |           2 |
| 40 | sync  | c19e664b-0df0-4149-8b13-98d7450ea72f | 2020-4-22 | 16:43:15.347864 | 16:58:15.347864 |           3 |
| 41 | async | 56a6f5bf-0f1a-4694-8c69-c67f7ed39147 | 2020-4-22 | 16:59:00.123456 | 17:04:00.123456 |           1 |
| 42 | async | bac9b649-4462-46cb-a290-df63cb4b7158 | 2020-4-22 | 17:00:00.123456 | 17:05:00.123456 |           1 |
| 43 | async | e9b12cf7-c03f-4d2a-a4a4-f19b0d7d50f3 | 2020-4-22 | 17:47:00.123456 | 17:52:00.123456 |           1 |
| 44 | async | e9b12cf7-c03f-4d2a-a4a4-f19b0d7d50f3 | 2020-4-22 | 17:47:00.123456 | 17:52:00.123456 |           1 |
| 45 | async | a04f1347-ec1d-469d-911a-7783658e1e71 | 2020-4-22 | 17:50:00.123456 | 17:55:00.123456 |           1 |
+----+-------+--------------------------------------+-----------+-----------------+-----------------+-------------+

И это схема:

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| type        | varchar(255) | YES  |     | NULL    |                |
| token       | varchar(255) | YES  |     | NULL    |                |
| date        | varchar(255) | YES  |     | NULL    |                |
| start_time  | varchar(255) | YES  |     | NULL    |                |
| end_time    | varchar(255) | YES  |     | NULL    |                |
| no_of_trans | int(11)      | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+

В настоящее время я проверяю эти параметры в скрипте python:

for i in range(len(async_end_list)):
  #print(async_start_list[i], '....', async_end_list[i])

  if (user_time >= async_start_list[i] and user_time <= async_end_list[i]):
    print("Wrong input")
    break

  if (user_time > async_start_list[i] and user_time > async_end_list[i]):

    if (end_time < bank_close and user_time > bank_open and user_time < bank_close and user_time > latest_sync_end_time):

      if (total_trans <= max_trans):
        mycursor.execute("""INSERT INTO tokens (type, token, date, start_time, end_time, no_of_trans) VALUES (%s, %s, %s, %s, %s, %s)""", 
                        ('async', rand_token, today, user_time, end_time, no_of_trans))
        mydb.commit()
        print(mycursor.rowcount, "record inserted.")
        break

      else:
        print("Maximum transactions for day has exceeded!!")
        break

    else:
      print("Record cannot be inserted.")
      break
...