Xreymonster
@Xreymonster
аэаэ

Как реализовать получение уникального айди из базы данных?

Сразу к делу. Пытаюсь я для своего бота написать модуль таймеров, код примерно так выглядит:

@client.on(events.NewMessage(outgoing=True, pattern=f"{prefix}ntime"))
async def time(event):
    if timeprov() == "True":
        besedaid = event.chat.id
        aa = event.text.split(" ")
        times = aa[1]
        interval = int(aa[2])
        aa.pop(0)
        aa.pop(0)
        aa.pop(0)
        aaa = " ".join(aa)
        if is_int(times):
            pass
        elif times.lower() == "inf" or times.lower() == "infinity":
            pass
        else:
            event.edit("  incorrect info, try again")
            return
        if is_int(interval):
            pass
        else:
            event.edit("  incorrect info, try again")
            return
        cursor.execute(f"INSERT OR IGNORE into 'timers' ('chatid', 'times', 'interval', 'word') VALUES (?, ?, ?, ?)", (besedaid, times, interval, aaa,))
        conn.commit()
        await event.edit("✅  success")
        interval *= 60
        await sleep(interval)
        if times.lower() == "inf":
            while True:
                await event.respond(aaa)
                await sleep(interval)
        else:
            while times > 0:
                times -= 1
                await event.respond(aaa)
                await sleep(interval)


Значит так, бот отделяет нужную информацию по порядку и проверяет ее синтаксис, если синтаксис верный - добавляет данные в бд. После бот начинает цикл по данным, которые ему задали. Нужно сделать так, чтобы цикл этот можно было как-то остановить при надобности, я хотел сделать отдельный параметр в бд, который проверяется при каждом исполнении цикла, и если его ответ не подходит под условие - цикл срывается, но для такого нужно найти строку с данными по которым эта штука работает, заменить в ней значение, а уже после добавить проверку этого условия. БД выглядит так:

6432be6e0d521367501782.jpeg

id - первичный ключ, который генерируется автоматом
chatid - чат, в котором вызвали команду (в другом месте уже используется, к вопросу почти непричастно)
times - повторения
interval - интервал в минутах (конвертируется в секунды)
disable - отключить или выключить (то, что надо найти и проверить и получить возможность изменять)
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Ну, insert вы для себя открыли.

я хотел сделать отдельный параметр в бд, который проверяется

посмотрите, как пользоваться select-ом, да еще с входными параметрами, чтобы извлечь строку.

заменить в ней значение,

Ищем как пользоваться запросом c update, да еще с параметрами.
PS: Если еще посмотрите, как пользоваться delete, то CRUD комплект вы изучили, как взаимодействовать с базой.
PPS: cursor после выполнения insert может содержать свойство last insert id, но это не точно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы