【发布时间】:2018-06-11 01:25:47
【问题描述】:
在创建“插入”时,我使用了“尝试和除外”方法来提醒用户何时输入了重复的主键,并使用消息框。然而,当输入重复键时,下次运行“INSERT”时,会出现以下错误:
“sqlite3.OperationalError: 数据库被锁定”
还有其他方法可以解决这个问题吗?
我已将下面的“插入”添加到帖子中,并创建了相关的表格。
插入函数
try:
conn=sqlite3.connect("Homework_Planner.db")
conn.execute("INSERT INTO Student (StudentID, Email, Password) \
VALUES (?,?,?);",(student_ID, student_Email, hashedPassword,))
conn.commit()
#Commits changes made to the database.
conn.close()
#Closes the database..
except sqlite3.IntegrityError:
messagebox.showinfo('Setup Error!', 'Student ID already exists.')
x=windows()
x.student_Setup()
表创建
conn=sqlite3.connect("Homework_Planner.db")
conn.execute (''' CREATE TABLE IF NOT EXISTS Student (
StudentID TEXT PRIMARY KEY NOT NULL,
Email TEXT NOT NULL,
Password TEXT NOT NULL );''')
【问题讨论】:
-
您是否尝试在 except 块之后关闭连接? conn.close()
-
我认为这是有问题的主要问题@EytanAvisror,在使用“try-with”后,我删除了 .close() 函数调用,但回首过去,它看起来确实像我的逻辑错误因为它在“除外”之前关闭了数据库。
标签: python sql python-3.x sqlite