我制作了一个程序,允许用户操作数据库,我有一个部分,用户可以在该数据库中添加多个条目(在1到10个条目之间的任何位置),我创建了另一个程序(下面)使用与我的主程序相似的原理来“重置”数据库。
import sqlite3, time
schoolDBConn = sqlite3.connect("SCHOOL_DB.db")
schoolDBCursor = schoolDBConn.cursor()
schoolDBCursor.execute(
"""
CREATE TABLE IF NOT EXISTS USER_DETAILS
(
username text,
password text,
clearance int,
classes int
)
"""
)
schoolDBCursor.execute("SELECT * FROM USER_DETAILS")
print(schoolDBCursor.fetchall())
if input("Delete all user_details?").upper() == "Y":
schoolDBCursor.execute("DELETE FROM USER_DETAILS")
if input("add items to user_details?").upper() == "Y":
user_list = [("foo","bar",3,0),("bar","foo",3,0),("Terri","Pass",2,0),
("Chris","Pass",2,0),("Tony","Pass",2,0),("Emma","Pass",2,0),
("Thomas","Pass",1,0),("Penny","Pass",1,0),("Kamryn","Pass",1,0),
("Kelsie","Pass",1,0),("James","Pass",1,0),("Connor","Pass",1,0),
("Steve","Pass",1,0),("Bob","Pass",2,0),("Elon","Pass",1,0)]
for i in user_list:
schoolDBCursor.execute("""INSERT INTO USER_DETAILS VALUES (?,?,?,?)""",
(i[0],i[1],i[2],i[3]))
schoolDBCursor.execute("SELECT * FROM USER_DETAILS")
print(schoolDBCursor.fetchall())
如果运行此功能,则将打印现有数据库中的所有项目,然后,如果我选择仅删除数据库中存在的内容,则打印功能将不返回任何内容。如果我选择删除然后将项目“添加”到数据库,则打印功能将返回我添加的项目
但是,当我重新运行该程序时,第一个打印语句返回数据库中的原始项目(不是删除的表或users_list中的项目),这当然没有帮助。
我的主程序也受此影响,并且由于我需要快速更新数据而导致问题。 我还使用应用程序“ SQlite管理器”来查看我的表,它们也不会在其中更新
答案 0 :(得分:1)
结果是我没有提交数据,我必须这样做:
schoolDBConn.commit()
或
with schoolDBConn: