답변:
사용 cursor.lastrowid
커서 오브젝트에 삽입 된 마지막 행의 ID를 얻기 위해, 또는 connection.insert_id()
해당 연결의 마지막 삽입에서 ID를 얻을 수 있습니다.
insert_id
반환됩니까?
lastrowid
현재 트랜잭션이 커밋 된 후에 만 사용할 수?
또한 cursor.lastrowid
(MySQLdb에서 지원하는 dbapi / PEP249 확장) :
>>> import MySQLdb
>>> connection = MySQLdb.connect(user='root')
>>> cursor = connection.cursor()
>>> cursor.execute('INSERT INTO sometable VALUES (...)')
1L
>>> connection.insert_id()
3L
>>> cursor.lastrowid
3L
>>> cursor.execute('SELECT last_insert_id()')
1L
>>> cursor.fetchone()
(3L,)
>>> cursor.execute('select @@identity')
1L
>>> cursor.fetchone()
(3L,)
cursor.lastrowid
connection.insert_id()
MySQL에 대한 다른 왕복 보다 다소 저렴 하고 훨씬 저렴합니다.
cursor.lastrowid
보다 저렴 connection.insert_id()
합니까?
cursor.lastrowid
다른 것과 다른 것을 반환 하는 데 문제 가 connection.insert_id()
있습니다. cursor.lastrowid
마지막 삽입 ID를 connection.insert_id()
반환 하고를 반환 0
합니다. 어떻게 그렇게 될수 있니?
SELECT @@IDENTITY AS 'Identity';
또는
SELECT last_insert_id();
select last_insert_id()
리눅스 시스템에서 CLI에서을
이것은 파이썬에서 PyMySql의 요구 사항 일 수도 있지만 ID를 원했던 정확한 테이블의 이름을 지정해야한다는 것을 알았습니다.
에:
cnx = pymysql.connect(host='host',
database='db',
user='user',
password='pass')
cursor = cnx.cursor()
update_batch = """insert into batch set type = "%s" , records = %i, started = NOW(); """
second_query = (update_batch % ( "Batch 1", 22 ))
cursor.execute(second_query)
cnx.commit()
batch_id = cursor.execute('select last_insert_id() from batch')
cursor.close()
batch_id
Out : 5
... 또는 올바른 Batch_ID 값이 실제로 무엇이든