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ÅŸ:

Nasıl bir Python web sayfasına giriş v...
Nasıl son eklenen kimliği almak için?...
Nasıl Python ile şimdiki zaman almak i...
En iyi eklenen satırın kimliği almak i...
Nasıl bir dosya adı kullanarak uygun b...