Sqlite3不将值插入数据库

时间:2018-11-07 20:09:39

标签: sql python-3.x sqlite

我制作了一个程序,允许用户操作数据库,我有一个部分,用户可以在该数据库中添加多个条目(在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管理器”来查看我的表,它们也不会在其中更新

1 个答案:

答案 0 :(得分:1)

结果是我没有提交数据,我必须这样做:

schoolDBConn.commit()

with schoolDBConn: