Python을 사용하여 SQLite에 행을 삽입한 후 삽입된 ID를 검색하는 방법은 무엇입니까?
Python을 사용하여 SQLite에 행을 삽입한 후 삽입된 ID를 검색하는 방법은 무엇입니까?제 테이블은 다음과 같습니다.
id INT AUTOINCREMENT PRIMARY KEY,
username VARCHAR(50),
password VARCHAR(50)
예제 데이터가 포함된 새 행을 삽입합니다.username="test"
그리고.password="test"
생성된 ID는 어떻게 하면 안전하게 취득할 수 있을까요?이것은 웹 사이트 솔루션에서 두 사람이 동시에 데이터를 삽입할 수 있습니다.마지막 읽기 행을 얻을 수 있다는 것은 알지만, 그건 안전한 거래라고 생각하지 않습니다.누가 조언 좀 해줄래?
cursor.lastrowid를 사용할 수 있습니다("옵션 DB API 확장" 참조).
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
s,cursor.lastrowid
를 반환하다id
마지막 줄에 대해서cursor
삽입:
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
:
cursor.executemany('INSERT INTO foo (username,password) VALUES (?,?)',
(('baz','bar'),('bing','bop')))
print(cursor.lastrowid)
# None
모든 크레딧은 @Martijn Pieters 코멘트:
다음 기능을 사용할 수 있습니다.
그
last_insert_rowid()
함수는 다음 값을 반환합니다.ROWID
함수를 호출한 데이터베이스 연결의 마지막 행 삽입.그last_insert_rowid()
SQL 함수는 다음 웹 사이트의sqlite3_last_insert_rowid()
C/C++ 인터페이스 기능.
SQLite 3.35의RETURNING
절:
CREATE TABLE users (
id INTEGER PRIMARY KEY,
first_name TEXT,
last_name TEXT
);
INSERT INTO users (first_name, last_name)
VALUES ('Jane', 'Doe')
RETURNING id;
삽입된 행의 요청된 열을 반환합니다.INSERT
,UPDATE
그리고.DELETE
진술들.Python 사용:
cursor.execute('INSERT INTO users (first_name, last_name) VALUES (?,?)'
' RETURNING id',
('Jane', 'Doe'))
row = cursor.fetchone()
(inserted_id, ) = row if row else None
언급URL : https://stackoverflow.com/questions/6242756/how-to-retrieve-inserted-id-after-inserting-row-in-sqlite-using-python
'source' 카테고리의 다른 글
정규식을 사용하여 소수인지 확인하는 방법 (0) | 2022.10.03 |
---|---|
JMeter JDBC 수동 커밋 (0) | 2022.10.03 |
Laravel에서 현재 날짜, 시간 및 날짜 가져오기 (0) | 2022.10.03 |
설정할 JavaScript 배열 (0) | 2022.10.03 |
InnoDB: 이전에 열린 테이블스페이스를 열려고 했습니다. (0) | 2022.10.03 |