Здесь у меня есть функция, которая читает таблицу, переносит оставшуюся дату студента на текущую дату, и из этого вычитания я хочу обновить поле (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