我有两个文件,一个是数据库文件,另一个是主文件。在主文件中,有两个函数负责更改 attempts 变量。但是如果我使用此代码保存到尝试数据库:
def set_attempts(self, attempts):
self.cursor.execute('''INSERT INTO users (attempts) VALUES (?)''', (attempts,))
return self.conn.commit()w
PS 然后数据库中没有任何更新。print(get_init_storage(message.from_user.id))在调用数据库写入函数之前和之后,我使用它显示数据库中的数据进行了检查。这是函数代码:
def get_init_storage(self, user_id):
result = self.conn.execute('''SELECT id,user_id,username, random_num,dev_mode_on, attempts, rand_one, rand_two FROM users WHERE user_id=?''', (user_id,)).fetchone()
return result
同样在带有数据库的文件中,在保存到数据库尝试的功能中,我设置了print(attempts),它显示了我写入的值,但是在输出时,get_init_storage(message.from_user.id)保留了相同的值,并且程序SqliteStudio创建了一个带有 user_id、user_name 值的新配置文件NULL,但我设置的尝试发生了变化:
以下是在主文件中保存 attempts 变量的代码:
<@bot.message_handler(commands=['setattempts'])
def set_attempts(message):
bot.send_message(message.chat.id, 'Введите новое кол-во попыток:')
bot.register_next_step_handler(message, set_attempts_global)
def set_attempts_global(message):
user_guess = message.text
if not user_guess.isdigit():
msg = bot.reply_to(message, '❌Ошибка!❌\nВведите числo, а не буквы!')
bot.register_next_step_handler(msg, set_attempts_global)
return
if int(user_guess) != 0:
global attempts_default
attempts = int(user_guess)
attempts = BotDB.set_attempts(attempts) # не работает
BotDB.set_attempts(attempts) # не работает
attempts_default = attempts
bot.send_message(message.chat.id, f'✅Попытки успешно изменены✅\nНовое кол-во попыток: {attempts}')
print('------------------------------------')
print('attempts updated')
print(BotDB.get_data_storage(message.from_user.id))
print('------------------------------------')
else:
print('------------------------------------')
print('attempts loose update')
print(BotDB.get_data_storage(message.from_user.id))
print('------------------------------------')
msg = bot.reply_to(message, '❌Ошибка!❌\nНельзя поставить число 0!')
bot.register_next_step_handler(msg, set_attempts_global)
return>
我使用模块telebot,sqlite3. Python版本:python 3.12


根据手头的任务,如果任务是保存所有更改,分析和处理点的统计、记录、动态,那么您需要添加另一个字段“日期时间”,并且每次保存全部(更改和未更改)数据库中的字段值。(+统计数据;-数据库量)
如果只需要当前值,可以使用:
更改当前值。(-没有故事)