【发布时间】:2018-11-07 20:09:38
【问题描述】:
我制作了一个允许用户操作数据库的程序,我有一个部分,用户可以将多个条目添加到某个数据库中(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 manager”来查看我的表,它们也不会更新
【问题讨论】:
标签: sql python-3.x sqlite