我正在编写一个将CSV文件转换为sqlite3数据库的python脚本。有一个id列,我已经设置为"主键唯一"我知道在CSV文件中有重复的信息。如何告诉它只将非重复信息存储到数据库中?
这是我到目前为止所拥有的。
for row in reader:
counter += 1
#this gets rid of the header in the CSV file
if counter == 1:
continue
s = (row[0],row[2],row[1],row[4],row[3],row[7],row[8],row[9])
course = row[5].split(" ")
c = (row[0],course[0],course[1],row[6])
#when it hits here and sees that two ids are the same, it crashes because it will not allow non-unique values.
curs.execute('''insert into students (id,lastname,firstname,major,email,city,state,zip)
values (?,?,?,?,?,?,?,?)''', s)
curs.execute('''insert into classes (id,subjcode,coursenumber,termcode)
values (?,?,?,?)''', c)
我真的很感激帮助。
答案 0 :(得分:1)
您可以使用INSERT OR IGNORE:
curs.execute('''INSERT OR IGNORE INTO students (id,lastname,firstname,major,email,city,state,zip) VALUES (?,?,?,?,?,?,?,?)''', s)
这将插入带有重复id
的第一行,但忽略所有连续的重复项。
答案 1 :(得分:0)
您可以在表格上使用UNIQUE
约束来实现这一目标。 id,然后使用INSERT OR IGNORE