У меня ошибка при обновлении данных, появляется «база данных заблокирована», я использую Python 3 и sqlite - PullRequest
0 голосов
/ 15 апреля 2020

Я копирую свой код

import sqlite3

class Product:

     db_name = 'database_escuela.db'

У меня есть запрос здесь

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

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

def actualizar_estudiantes(self):
    #query = 'SELECT * FROM escuela'
    db_rows = self.run_query(query)
    self.dias1=10
    for row in db_rows:
        print('Entro en Actualizar')
        query = "UPDATE escuela SET dias1 = ?"
        parameters = (self.dias1, )
        self.run_query(query, parameters)
        #result.close()

Я занимался расследованием и понимаю, что дважды открываю таблицу, но не знаю, как исправить ошибку, я ценю помощь, которую вы можете дать мне, я начинаю с python

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 183, in actualizar_estudiantes
    self.run_query(query, parameters)
  File "index5.py", line 97, in run_query
    conn.commit()
sqlite3.OperationalError: database is 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 177, in actualizar_estudiantes
     db_rows = self.run_query(query)
UnboundLocalError: local variable 'query' referenced before assignment

1 Ответ

0 голосов
/ 15 апреля 2020

Вам нужно только ОБНОВЛЕНИЕ SQL, и оно обновит все записи таблицы escuela:

def actualizar_estudiantes(self):
    print('Entro en Actualizar')
    self.dias1 = 10
    query = "UPDATE escuela SET dias1 = ?"
    parameters = (self.dias1, )
    self.run_query(query, parameters)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...