插入或替换不与sqlite3和python一起使用的语句

时间:2013-10-26 02:19:42

标签: python sqlite

每次我通过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()

2 个答案:

答案 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不知道它应该“或替换”它是什么,因为它没有任何基础替换。添加主键。