每次我通过python解释器运行它都会写入新的值。例如:
name = ben
age = 10
phone = 42045042
如果我跑了10次。我的数据库中有10个重复项。我知道它必须是一个简单的解决方案,但我已经在这个工作了几个小时,无法弄明白。
conn = sqlite3.connect('addressbook.db')
cur=conn.cursor()
conn.execute('''
CREATE TABLE IF NOT EXISTS people(name TEXT,
age TEXT, phone TEXT, fblink TEXT)''')
conn.execute("INSERT OR REPLACE INTO people values (?, ?, ?, ?)", ben.displayPerson())
cursor = conn.execute("SELECT name, age, phone, fblink from people")
for row in cursor:
print "NAME = ", row[0]
print "AGE = ", row[1]
print "PHONE = ", row[2]
print "FACEBOOK LINK = ", row[3], "\n"
cur.close()
conn.commit()
conn.close()
答案 0 :(得分:2)
没有主键字段。
制作主键字段。
例如:
conn.execute('''
CREATE TABLE IF NOT EXISTS people(name TEXT primary key,
age TEXT, phone TEXT, fblink TEXT)''')
发生UNIQUE约束违规时执行 REPLACE
。没有主键(或唯一的..),它就不会发生。
答案 1 :(得分:1)
你的表没有主键,因此SQLite不知道它应该“或替换”它是什么,因为它没有任何基础替换。添加主键。