在多次运行代码时,如何生成一个SQLlite行而不添加另一个相同的行?

2024-04-27 00:35:17 发布

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

这是我正在使用的代码:

def setbase():
    conn=sqlite3.connect("gamebase.db")
    cur=conn.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS scores (box TEXT, score INTEGER)")
    cur.execute("INSERT INTO 'scores' IF NOT EXISTS VALUES (box, score) ('a', 2)")
    cur.execute("INSERT INTO 'scores' (box, score) VALUES ('b', 0)")
    cur.execute("INSERT INTO 'scores' (box, score) VALUES ('c', 0)")
    cur.execute("INSERT INTO 'scores' (box, score) VALUES ('d', 0)")
    conn.commit()
    conn.close()

当我运行这段代码时,一切都很好,但是当我多次运行它时,行会不断地添加和添加。有什么方法可以防止这种情况发生吗


Tags: 代码boxexecuteifdefexistsnotconn
1条回答
网友
1楼 · 发布于 2024-04-27 00:35:17

您需要确定是什么使您的行具有唯一性。为了避免在后续执行中重复,可以检查是否已经存在具有相同标识的行。例如,如果“box”值是唯一的,则首先选择“by box”,并且仅在它不返回结果时插入

另一种方法是一个叫做upsert的概念,它是supported by SQLite

相关问题 更多 >