@Fizl

Функция изменения данных в бд не работает, почему?

Здравствуйте !
Я пытаюсь изменить один столбец в бд, но по какой-то причине моя функция не только не работает, но и не выдает ошибок
class DATABASE:
    def __init__(self):

        self.conn2 = sqlite3.connect('db1.db')
        self.cur2 = self.conn2.cursor()
        self.cur2.execute(
            '''CREATE TABLE IF NOT EXISTS task(id INTEGER PRIMARY KEY, name TEXT, task_name TEXT, task_dict TEXT, task_time TEXT, succes BOOLEAN)''')
        self.conn2.commit() 
 
class GET_MAIL():
    def __init__(self, mail):
        
        self.mail = mail
        self.db = db
        self.email_file = codecs.open('email.txt', 'r')
        self.password_file = codecs.open('password.txt', 'r')

        self.read_email_file = str(self.email_file.read())
        self.read_password_file = str(self.password_file.read())

        (self.retcode, self.capabilities) = self.mail.login(self.read_email_file, self.read_password_file)
#////////Нужная функция//////////
    def usedonedata(self, task_name_):
        self.db.cur2.execute("UPDATE task SET succes = True WHERE task_name = (?)", (task_name_,))
        self.db.conn2.commit()
      
#//////////////////////////////////////
    def get_task_func_norepeat(self):

        self.mail.list()
        self.mail.select('inbox')
        (retcode, messages) = self.mail.search(None, '(UNSEEN)')
        if retcode == 'OK':
            for num in messages[0].split():
                typ, data = self.mail.fetch(num,'(RFC822)')
                for response_part in data:
                    if isinstance(response_part, tuple):
                        original = email.message_from_bytes(response_part[1])
                        raw_email = data[0][1]
                        raw_email_string = raw_email.decode('utf-8')
                        email_message = email.message_from_string(raw_email_string)
                        typ, data = self.mail.store(num,'+FLAGS','\\Seen')

                        if "=?utf-8?b?IyMjIyo=?=" in ((email_message['Subject'])):
                            print("Задача решена")

                            if email_message.is_multipart():
                                print('1')
                                for payload in email_message.get_payload():
                                    body = payload.get_payload(decode=True).decode('utf-8')                                    
                                    self.usedonedata(body)                                                                                                       
                            else:    
                                print("2")
                                body = email_message.get_payload(decode=True).decode('utf-8')                                
                                self.usedonedata(body)                                                                      
                        else:
                            pass

Я даже пробовал создать ее в самом классе DATABASE и вызывать посредством функции в классе GET_MAIL
Это выглядело примерно так :
#В классе DATABASE*
    def done_data(self, task_name_):
        self.cur2.execute("UPDATE task SET succes = True WHERE task_name = (?)", (task_name_,))
        self.conn2.commit()
#В классе GET_MAIL*
    def usedonedata(self,  task_name_):
        self.db.done_data(task_name_)
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы