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

  • 07cadikiz07

    07cadikiz07

    17 EKİM 2007
  • Manuel Vizcaino

    Manuel Vizca

    27 Mayıs 2008
  • The Platform

    The Platform

    14 HAZİRAN 2006