pymysql не изменяет значение
Я делаю бота для вк, есть функция добавления монетки на счет пользователя, но значение money не изменяется.
cur = con.cursor()
cur.execute("""CREATE TABLE users(id INT(15),
money INT(255)
)""")
def send_message(user_id, message, keyboard=None):
session.method('messages.send',{
"user_id": user_id,
"message": message,
"random_id": 0
})
for event in VkLongPoll(session).listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me:
text = event.text.lower()
user_id = event.user_id
if text == 'добавить 1 монетку':
cur.execute(f'UPDATE users SET money = {1} WHERE id = "{user_id}"')
send_message(user_id, 'Монетка добавлена на ваш счет!')
Значение не изменяется, оно было на нуле и осталось. Как можно это исправить?
Ответы (1 шт):
Автор решения: Arseni Mourzenko
→ Ссылка
Вы забыли:
con.commit()
cur.execute выполняется внутри транзакции. Автоматически (то есть без con.commit), транзакция аннулируется.
Ещё очень советую вам почитать книжки про то, как использовать базы данных. В вашем коде, например, присутствует очень распространенная среди начинающих ошибка, SQL Injection называется, которая может потенциально дать возможность пользователю делать всё что он желает с вашей базой данных. Например всё стереть нафиг. Не думаю, что вы этого хотите.