使用python将唯一行插入sqlite3

时间:2014-05-21 17:23:41

标签: python csv sqlite

我正在编写一个将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)

我真的很感激帮助。

2 个答案:

答案 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