SORU
5 HAZİRAN 2011, Pazar


Nasıl SQLite Python kullanarak satırı ekledikten sonra eklenen kimliği almak için?

Nasıl SQLite Python kullanarak satırı ekledikten sonra eklenen kimliği almak için? Gibi bir tablo var

id int autoincrement primary key,
username varchar(50),
password varchar(50)

ve ben örnek username="test" password="test" ile yeni bir satır ekleyin. Nasıl oluşturulur kimliği almak için ama bu işlem güvenli (web sitesidir ve iki kişi aynı anda ekleme yeni bir kullanıcı, biliyorum bu işlem güvenli değil geçen ama okumak olabilir)? Herkes bana bazı tavsiyeler verebilir?

CEVAP
5 HAZİRAN 2011, Pazar


cursor.lastrowid kullanabilirsiniz ("İsteğe bağlı DB API Uzantıları"):

connection=sqlite3.connect(':memory:')
cursor=connection.cursor()
cursor.execute('''CREATE TABLE foo (id integer primary key autoincrement ,
                                    username varchar(50),
                                    password varchar(50))''')
cursor.execute('INSERT INTO foo (username,password) VALUES (?,?)',
               ('test','test'))
print(cursor.lastrowid)
# 1

Eğer iki kişi ekleme aynı anda, sürece onlar kullanarak farklı cursors cursor.lastrowid dönüş id son satır cursor eklenen:

cursor.execute('INSERT INTO foo (username,password) VALUES (?,?)',
               ('blah','blah'))

cursor2=connection.cursor()
cursor2.execute('INSERT INTO foo (username,password) VALUES (?,?)',
               ('blah','blah'))

print(cursor2.lastrowid)        
# 3
print(cursor.lastrowid)
# 2

cursor.execute('INSERT INTO foo (id,username,password) VALUES (?,?,?)',
               (100,'blah','blah'))
print(cursor.lastrowid)
# 100

lastrowid bir zamanlar executemany: birden fazla satır eklediğinizde None verdiğini unutmayın

cursor.executemany('INSERT INTO foo (username,password) VALUES (?,?)',
               (('baz','bar'),('bing','bop')))
print(cursor.lastrowid)
# None

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damien Hayes

    Damien Hayes

    11 Mart 2008
  • listedabive

    listedabive

    30 Ocak 2007
  • midomansour

    midomansour

    19 EYLÜL 2009