for i in range(10):
....
if n1 % 10 == i:
(насчет подстановки данных с помощью "?") я не заметил в моём случае разницы между подстановкой данных и более мне привычными f-строками.
Насчет primary key я почитал в документации, я понял его "задачу" - каждая строка имеет свой уникальный идентификатор, но не до конца понял "а почему я так не могу?". После добавления primary key в таблицу добавляется просто еще одно правило которое (возможно) никак не сказывается на, например, поиске строки с указанным id: как было WHERE id = 1 так и осталось.
cursor.execute("INSERT INTO table1(id, embed) VALUES (?, ?)", (1, supertext))
cursor.execute("INSERT INTO table1(embed) VALUES (?)", (supertext, ))
cursor.execute(f"INSERT INTO table1 VALUES (1, '{supertext}')")
cursor.execute("INSERT INTO table1 VALUES (?, ?)", (1, supertext))
int primary key
@bot.on.message(text=["Призми погладить", "Рп погладить", "[id{user_id}|Фурина]"])
async def pat_user(message: Message):
# Проверяем, было ли упоминание пользователя через @
mentioned_user_id = None
mentioned_users = re.findall(r'\[id(\d+)\|.*?\]', message.text)
if mentioned_users:
mentioned_user_id = mentioned_users[0]
@bot.on.message(text=["Рп погладить [id<mentioned_user_id>|<mentioned_user_name>]", "Призми погладить", "Рп погладить"])
async def pat_user(message: Message, mentioned_user_id=None, mentioned_user_name=None):
mentioned_user_id ... # уже можно использовать напрямую
# можно и само имя использовать, если вдруг пригодится mentioned_user_name
mentioned_users = re.findall(r'\|@(.+?)\b', message.text)
if mentioned_users:
mentioned_user_id = mentioned_users[0]
Я под тем же пользаком сижу в dbeaver и он там может CRUD. Но не может создать запись в таблице т.к. не может её найти.
По поводу изначального кода еще:
1) не надо делать commit после каждой команды, сделайте в конце, после массовых изменений.
Точнее, некую середину выбрать, как предложили уже, хотя бы не чаще каждых 100 команд.
2) если есть возможность, лучше минимизировать количество таких вызовов update через код python именно, т.е. предварительно сгруппировать данные так, чтобы по каждому диапазону дат получался только один вызов update.
3) можно свою таблицу данных погоды по дням сначала загрузить в отдельную таблицу в базе, а потом уже средствами SQL сделать update одной командой, напрямую выбирая данные из самой базы. Такое как правило обрабатывается гораздо быстрее, чем повторный вызов update через курсор питона.