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)''')

REPLACEUNIQUE 制約違反が発生したときに実行されます。主キー(または一意の..)がなければ、それは起こりません。

于 2013-10-26T03:04:31.853 に答える
1

あなたのテーブルには主キーがないため、SQLite は何を "OR REPLACE" すべきかを認識していません。主キーを追加します。

于 2013-10-26T03:16:55.167 に答える