如何使用 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)")
每次我运行这段代码,我插入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)")