我更新数据时出错,“数据库被锁定”出现,我使用Python3和sqlite

2024-10-02 02:31:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我撕毁了我的密码

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

Tags: runinpyselfdblinecallconn
1条回答
网友
1楼 · 发布于 2024-10-02 02:31:41

您只需要更新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)

相关问题 更多 >

    热门问题