Ошибка при записи внутри For (Когда я повторяюсь) - PullRequest
1 голос
/ 02 мая 2020

Здесь у меня есть функция, которая читает таблицу, переносит оставшуюся дату студента на текущую дату, и из этого вычитания я хочу обновить поле (Dias) в таблице, я хочу сделать это с каждым из записи в таблице. Вот мой запрос, который я использую в различных частях программы.

def run_query(self, query, parameters = ()):
    with sqlite3.connect(self.db_name) as conn:
        cursor = conn.cursor()
        result = cursor.execute(query, parameters)
        conn.commit()
    return result

Теперь моя проблема в том, что когда я помещаю строку ---- self.run_query (запрос, параметры) ---- внутри поскольку база данных заблокирована, она генерирует ошибку, но если я оставляю ее вне, она обновляет только последний реестр.

def actualizar_estudiantes(self):
    miFecha=StringVar()
    miID1=StringVar()
    Fec_Act=datetime.datetime.today()
    query = 'SELECT * FROM escuela' 
    db_rows = self.run_query(query) 
    for database_escuela in db_rows:
        wdias=0
        miID1.set(database_escuela[0])
        miID = miID1.get()
        miFecha.set(database_escuela[6])
        Fec_Est = miFecha.get()
        Fec_est1 = datetime.datetime.strptime(str(Fec_Est), '%d/%m/%Y')
        wdias=((Fec_Act - Fec_est1).days)
        query = 'UPDATE escuela SET DIAS1 = ? WHERE ID = ?'
        parameters = (wdias, miID)
        self.run_query(query, parameters)
    messagebox.showinfo("A T E N C I O N ! ! !", "La lista de estudiantes se Actualizó Exitosamente")

Если поставить строку ---- self.run_query (query , параметры) ---- внутри, ERROR DATABASE LOCKED, если я оставлю это снаружи, я обновлю только последнюю строку, вы можете мне помочь или объяснить, как должна обновляться строка, а не блокировать меня базой данных? Пожалуйста, у меня были дни с этой проблемой. Спасибо

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Juan Carlos Pantoja\AppData\Local\Programs\Python\Python38- 
 32\lib\tkinter\__init__.py", line 1883, in __call__
     return self.func(*args)
   File "index5.py", line 206, in actualizar_estudiantes
     self.run_query(query, parameters)
   File "index5.py", line 106, in run_query
     conn.commit()
 sqlite3.OperationalError: database is locked
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...