2

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

2 回答 2

2

没有主键字段。

创建一个主键字段。

例如:

conn.execute('''
    CREATE TABLE IF NOT EXISTS people(name TEXT primary key,
                       age TEXT, phone TEXT, fblink TEXT)''')

REPLACE当 UNIQUE 约束违反发生时执行。没有主键(或唯一的..),它不会发生。

于 2013-10-26T03:04:31.853 回答
1

您的表没有主键,因此 SQLite 不知道它应该“或替换”什么,因为它没有任何替换的基础。添加主键。

于 2013-10-26T03:16:55.167 回答