python - पायथन का उपयोग कर SQLite में पंक्ति डालने के बाद डाली गई आईडी को कैसे पुनर्प्राप्त करें?




1 Answers

आप cursor.lastrowid उपयोग कर सकते हैं (देखें "वैकल्पिक डीबी एपीआई एक्सटेंशन"):

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

यदि दो लोग एक ही समय में सम्मिलित होते हैं, जब तक कि वे विभिन्न cursor का उपयोग कर रहे हों, cursor cursor.lastrowid cursor डालने वाली अंतिम पंक्ति के लिए id वापस कर देगा:

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 None देता है जब आप एक समय में एक से अधिक पंक्तियों को executemany साथ executemany :

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

पायथन का उपयोग कर SQLite में पंक्ति डालने के बाद डाली गई आईडी को कैसे पुनर्प्राप्त करें? मेरे पास इस तरह की सारणी है:

id INT AUTOINCREMENT PRIMARY KEY,
username VARCHAR(50),
password VARCHAR(50)

मैं उदाहरण डेटा username="test" और password="test" साथ एक नई पंक्ति डालता हूं। लेनदेन में सुरक्षित आईडी को मैं सुरक्षित तरीके से कैसे प्राप्त करूं? यह एक वेबसाइट समाधान के लिए है, जहां दो लोग एक ही समय में डेटा डालने वाले हो सकते हैं। मुझे पता है कि मुझे अंतिम पढ़ने वाली पंक्ति मिल सकती है, लेकिन मुझे नहीं लगता कि यह लेनदेन सुरक्षित है। क्या कोई मुझे कुछ सलाह दे सकता है?




Related