如何使用 Python 防止 SQLite 中的重复行或数据?

How to prevent duplicate rows or data in SQLite with Python?

每次我运行这段代码,我插入table的数据都是重复的,那么如何防止重复呢?

我试图寻找解决方案,但没有成功。我试图在 INSERT INTO 中使用“if not exists”作为“INSERTO INTO if not exists users”,但数据重复仍然存在并且没用。

我发现一个错误说:sqlite3.OperationalError: near "not": syntax error

这是代码:

import sqlite3

db = sqlite3.connect('data.db')

cr = db.cursor()

cr.execute("CREATE TABLE if not exists users (user_id INTEGER, name TEXT, age 
INTEGER, phone INTEGER)")

cr.execute("INSERT INTO if not exists users (user_id, name, age, phone) 
VALUES(1, 'Ahmed', 33, 01001234567)")

cr.execute("SELECT * FROM users")

 user = cr.fetchall()
 print(user)
 db.commit()

在您的 table 中创建一个主键并在该约束上设置冲突,如下所示:

create table if not exists users
( 
  user_id integer primary key not null on conflict ignore 
  , name text 
  , age integer 
  , phone integer
)

现在,如果违反了该主键,则在您插入或更新时什么也不会发生。 也快速提示保存 phone int 数据类型中的数字不是最佳做法,它需要更多的内存,并且您仅限于数字等。

您正在检查 table 是否存在以创建 table。但是以任何方式插入行。请更改第二行,如下所示,首先检查用户 table 是否已经拥有 user_id 1 的数据。

cr.execute("insert into users (user_id,name,age,phone) Select 1,'Ahmed',33,01001234567 where not exists (select 1 from users where user_id=1)")