2011-04-10 14 views
6

Gang, pySQLite ile oynamaya başladım ve db'de yoksa yeni bir kayıt eklemeden önce varolan kayıtlar için db'nin nasıl sorgulanacağını gösteren bir örnek bulmaya çalışıyorum. Çok temel bir işleve baktığımı hissediyorum.Temel pySQLite örneği?

Teşekkürler!

cevap

11

tablo oluştururken UNIQUE anahtar kelimeyi kullanın ve kayıt "yeni" (benzersiz) yalnızca eklemek için INSERT OR INGORE kullanın:

cursor.execute('INSERT INTO foo (bar,baz) VALUES (?, ?)',(1,2)) 
: Burada

connection=sqlite3.connect(':memory:') 
cursor=connection.cursor() 
cursor.execute('CREATE TABLE foo (bar INTEGER UNIQUE, baz INTEGER)') 

kez satır ekleyin

tekrar satır ekleyin çalışılıyor başarısız:

try: 
    cursor.execute('INSERT INTO foo (bar,baz) VALUES (?, ?)',(1,2)) 
except sqlite3.IntegrityError as err: 
    print(err) 
    # sqlite3.IntegrityError: column bar is not unique 

INSERT OR IGNORE ekler o UNIQUE kısıt geçirilir yalnızca rekor:

cursor.execute('INSERT OR IGNORE INTO foo (bar,baz) VALUES (?, ?)',(1,3)) 

cursor.execute('SELECT * from foo') 
data=cursor.fetchall() 
print(data) 
# [(1, 2)]  

İşte

  1. hakkındaki bilgilere bağlantılar vardır kullanın

    cursor.execute(''' 
        CREATE TABLE foo (bar INTEGER, baz INTEGER, bing INTEGER, UNIQUE (bar, baz))''') 
    

    gibi bir şey birden çok alanda bir UNIQUE dizin oluşturmak için INSERT OR IGNORE

  2. UNIQUE constraints